diff --git a/Source/ThirdParty/DirectX12Agility/DirectX12Agility.Build.cs b/Source/ThirdParty/DirectX12Agility/DirectX12Agility.Build.cs
new file mode 100644
index 000000000..041211019
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/DirectX12Agility.Build.cs
@@ -0,0 +1,22 @@
+// Copyright (c) Wojciech Figat. All rights reserved.
+
+using Flax.Build;
+using Flax.Build.NativeCpp;
+
+///
+/// https://www.nuget.org/packages/Microsoft.Direct3D.D3D12
+///
+public class DirectX12Agility : DepsModule
+{
+ ///
+ public override void Init()
+ {
+ base.Init();
+
+ LicenseType = LicenseTypes.MIT;
+ LicenseFilePath = "LICENSE.txt";
+
+ // Merge third-party modules into engine binary
+ BinaryModuleName = "FlaxEngine";
+ }
+}
diff --git a/Source/ThirdParty/DirectX12Agility/LICENSE.txt b/Source/ThirdParty/DirectX12Agility/LICENSE.txt
new file mode 100644
index 000000000..de7d649e5
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/LICENSE.txt
@@ -0,0 +1,158 @@
+MICROSOFT SOFTWARE LICENSE TERMS
+
+MICROSOFT DIRECTX
+
+These license terms are an agreement between you and Microsoft
+Corporation (or one of its affiliates). They apply to the software named
+above and any Microsoft services or software updates (except to the
+extent such services or updates are accompanied by new or additional
+terms, in which case those different terms apply prospectively and do
+not alter your or Microsoft’s rights relating to pre-updated software or
+services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS
+BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS.
+
+INSTALLATION AND USE RIGHTS.
+
+General. Subject to the terms of this agreement, you may install and use any number of copies of the software, and solely for use on Windows.
+
+Included Microsoft Applications. The software may include other Microsoft applications. These license terms apply to those included applications, if any, unless other license terms are provided with the other Microsoft applications.
+
+Microsoft Platforms. The software may include components from Microsoft Windows. These components are governed by separate agreements and their own product support policies, as described in the license terms found in the installation directory for that component or in the “Licenses” folder accompanying the software.
+
+Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software.
+
+DATA.
+
+Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you to collect data from users of your applications. If you use these features to enable data collection in your applications, you must comply with applicable law, including providing appropriate notices to users of your applications. You can learn more about data collection and use in the help documentation and the privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices.
+
+Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at https://docs.microsoft.com/en-us/legal/gdpr.
+
+DISTRIBUTABLE CODE. The software may contain code you are permitted to distribute (i.e. make available for third parties) in applications you develop, as described in this Section.
+
+Distribution Rights. The code and test files described below are distributable if included with the software.
+
+Distributables. You may copy and distribute the object code form of the software listed in the distributables file list in the software; and
+
+Third Party Distribution. You may permit distributors of your applications to copy and distribute any of this distributable code you elect to distribute with your applications.
+
+Distribution Requirements. For any code you distribute, you must:
+
+add significant primary functionality to it in your applications;
+
+i. require distributors and external end users to agree to terms that protect it and Microsoft at least as much as this agreement; and
+
+ii. indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the unmodified distributable code.
+
+Distribution Restrictions. You may not:
+
+use Microsoft’s trademarks or trade dress in your application in any way that suggests your application comes from or is endorsed by Microsoft; or modify or distribute the source code of any distributable code so that any part of it becomes subject to any license that requires that the distributable code, any other part of the software, or any of Microsoft’s other intellectual property be disclosed or distributed in source code form, or that others have the right to modify it.
+
+SCOPE OF LICENSE. The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to):
+
+work around any technical limitations in the software that only allow you to use it in certain ways;
+
+reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third party licensing terms governing use of certain open source components that may be included in the software;
+
+remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;
+
+use the software in any way that is against the law or to create or propagate malware; or
+
+share, publish, distribute, or lease the software (except for any distributable code, subject to the terms above), provide the software as a stand-alone offering for others to use, or transfer the software or this agreement to any third party.
+
+EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting.
+
+SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind.
+
+UPDATES. The software may periodically check for updates, and download and install them for you. You may obtain updates only from Microsoft or authorized sources. Microsoft may need to update your system to provide you with updates. You agree to receive these automatic updates without any additional notice. Updates may not include or support all existing software features, services, or peripheral devices.
+
+ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software.
+
+APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles. If you acquired the software in any other country, its laws apply. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court. If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court.
+
+CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you:
+
+a. Australia. You have statutory guarantees under the Australian
+ Consumer Law and nothing in this agreement is intended to affect
+ those rights.
+
+b. Canada. If you acquired this software in Canada, you may stop
+ receiving updates by turning off the automatic update feature,
+ disconnecting your device from the Internet (if and when you
+ re-connect to the Internet, however, the software will resume
+ checking for and installing updates), or uninstalling the software.
+ The product documentation, if any, may also specify how to turn off
+ updates for your specific device or software.
+
+c. Germany and Austria.
+
+ i. Warranty. The properly licensed software will perform substantially
+ as described in any Microsoft materials that accompany the software.
+ However, Microsoft gives no contractual guarantee in relation to the
+ licensed software.
+
+ ii. Limitation of Liability. In case of intentional conduct, gross
+ negligence, claims based on the Product Liability Act, as well as, in
+ case of death or personal or physical injury, Microsoft is liable
+ according to the statutory law.
+
+Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence.
+
+DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+
+LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES.
+
+This limitation applies to (a) anything related to the software,
+services, content (including code) on third party Internet sites, or
+third party applications; and (b) claims for breach of contract,
+warranty, guarantee, or condition; strict liability, negligence, or
+other tort; or any other claim; in each case to the extent permitted by
+applicable law.
+
+It also applies even if Microsoft knew or should have known about the
+possibility of the damages. The above limitation or exclusion may not
+apply to you because your state, province, or country may not allow the
+exclusion or limitation of incidental, consequential, or other damages.
+
+Please note: As this software is distributed in Canada, some of the
+clauses in this agreement are provided below in French.
+
+Remarque: Ce logiciel étant distribué au Canada, certaines des clauses
+dans ce contrat sont fournies ci-dessous en français.
+
+EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert «
+tel quel ». Toute utilisation de ce logiciel est à votre seule risque et
+péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez
+bénéficier de droits additionnels en vertu du droit local sur la
+protection des consommateurs, que ce contrat ne peut modifier. La ou
+elles sont permises par le droit locale, les garanties implicites de
+qualité marchande, d’adéquation à un usage particulier et d’absence de
+contrefaçon sont exclues.
+
+LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES
+DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une
+indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $
+US. Vous ne pouvez prétendre à aucune indemnisation pour les autres
+dommages, y compris les dommages spéciaux, indirects ou accessoires et
+pertes de bénéfices.
+
+Cette limitation concerne:
+
+• tout ce qui est relié au logiciel, aux services ou au contenu (y
+compris le code) figurant sur des sites Internet tiers ou dans des
+programmes tiers; et
+
+• les réclamations au titre de violation de contrat ou de garantie, ou
+au titre de responsabilité stricte, de négligence ou d’une autre faute
+dans la limite autorisée par la loi en vigueur.
+
+Elle s’applique également, même si Microsoft connaissait ou devrait
+connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas
+l’exclusion ou la limitation de responsabilité pour les dommages
+indirects, accessoires ou de quelque nature que ce soit, il se peut que
+la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre
+égard.
+
+EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques.
+Vous pourriez avoir d’autres droits prévus par les lois de votre pays.
+Le présent contrat ne modifie pas les droits que vous confèrent les lois
+de votre pays si celles-ci ne le permettent pas.
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12.h b/Source/ThirdParty/DirectX12Agility/d3d12.h
new file mode 100644
index 000000000..b942825c3
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12.h
@@ -0,0 +1,36890 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12_h__
+#define __d3d12_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12Object_FWD_DEFINED__
+#define __ID3D12Object_FWD_DEFINED__
+typedef interface ID3D12Object ID3D12Object;
+
+#endif /* __ID3D12Object_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceChild_FWD_DEFINED__
+#define __ID3D12DeviceChild_FWD_DEFINED__
+typedef interface ID3D12DeviceChild ID3D12DeviceChild;
+
+#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12RootSignature_FWD_DEFINED__
+#define __ID3D12RootSignature_FWD_DEFINED__
+typedef interface ID3D12RootSignature ID3D12RootSignature;
+
+#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
+#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
+typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
+
+#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
+#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
+typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
+
+#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Pageable_FWD_DEFINED__
+#define __ID3D12Pageable_FWD_DEFINED__
+typedef interface ID3D12Pageable ID3D12Pageable;
+
+#endif /* __ID3D12Pageable_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Heap_FWD_DEFINED__
+#define __ID3D12Heap_FWD_DEFINED__
+typedef interface ID3D12Heap ID3D12Heap;
+
+#endif /* __ID3D12Heap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Resource_FWD_DEFINED__
+#define __ID3D12Resource_FWD_DEFINED__
+typedef interface ID3D12Resource ID3D12Resource;
+
+#endif /* __ID3D12Resource_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
+#define __ID3D12CommandAllocator_FWD_DEFINED__
+typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
+
+#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Fence_FWD_DEFINED__
+#define __ID3D12Fence_FWD_DEFINED__
+typedef interface ID3D12Fence ID3D12Fence;
+
+#endif /* __ID3D12Fence_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Fence1_FWD_DEFINED__
+#define __ID3D12Fence1_FWD_DEFINED__
+typedef interface ID3D12Fence1 ID3D12Fence1;
+
+#endif /* __ID3D12Fence1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineState_FWD_DEFINED__
+#define __ID3D12PipelineState_FWD_DEFINED__
+typedef interface ID3D12PipelineState ID3D12PipelineState;
+
+#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineState1_FWD_DEFINED__
+#define __ID3D12PipelineState1_FWD_DEFINED__
+typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
+
+#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
+#define __ID3D12DescriptorHeap_FWD_DEFINED__
+typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
+
+#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12QueryHeap_FWD_DEFINED__
+#define __ID3D12QueryHeap_FWD_DEFINED__
+typedef interface ID3D12QueryHeap ID3D12QueryHeap;
+
+#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CommandSignature_FWD_DEFINED__
+#define __ID3D12CommandSignature_FWD_DEFINED__
+typedef interface ID3D12CommandSignature ID3D12CommandSignature;
+
+#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CommandList_FWD_DEFINED__
+#define __ID3D12CommandList_FWD_DEFINED__
+typedef interface ID3D12CommandList ID3D12CommandList;
+
+#endif /* __ID3D12CommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
+
+#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
+
+#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
+
+#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CommandQueue_FWD_DEFINED__
+#define __ID3D12CommandQueue_FWD_DEFINED__
+typedef interface ID3D12CommandQueue ID3D12CommandQueue;
+
+#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
+#define __ID3D12CommandQueue1_FWD_DEFINED__
+typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
+
+#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device_FWD_DEFINED__
+#define __ID3D12Device_FWD_DEFINED__
+typedef interface ID3D12Device ID3D12Device;
+
+#endif /* __ID3D12Device_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
+#define __ID3D12PipelineLibrary_FWD_DEFINED__
+typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
+
+#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
+#define __ID3D12PipelineLibrary1_FWD_DEFINED__
+typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
+
+#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device1_FWD_DEFINED__
+#define __ID3D12Device1_FWD_DEFINED__
+typedef interface ID3D12Device1 ID3D12Device1;
+
+#endif /* __ID3D12Device1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device2_FWD_DEFINED__
+#define __ID3D12Device2_FWD_DEFINED__
+typedef interface ID3D12Device2 ID3D12Device2;
+
+#endif /* __ID3D12Device2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device3_FWD_DEFINED__
+#define __ID3D12Device3_FWD_DEFINED__
+typedef interface ID3D12Device3 ID3D12Device3;
+
+#endif /* __ID3D12Device3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
+#define __ID3D12ProtectedSession_FWD_DEFINED__
+typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
+
+#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
+#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
+typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
+
+#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device4_FWD_DEFINED__
+#define __ID3D12Device4_FWD_DEFINED__
+typedef interface ID3D12Device4 ID3D12Device4;
+
+#endif /* __ID3D12Device4_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
+#define __ID3D12LifetimeOwner_FWD_DEFINED__
+typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
+
+#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
+#define __ID3D12SwapChainAssistant_FWD_DEFINED__
+typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
+
+#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
+#define __ID3D12LifetimeTracker_FWD_DEFINED__
+typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
+
+#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObject_FWD_DEFINED__
+#define __ID3D12StateObject_FWD_DEFINED__
+typedef interface ID3D12StateObject ID3D12StateObject;
+
+#endif /* __ID3D12StateObject_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
+#define __ID3D12StateObjectProperties_FWD_DEFINED__
+typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
+
+#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
+#define __ID3D12StateObjectProperties1_FWD_DEFINED__
+typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
+
+#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
+#define __ID3D12StateObjectProperties2_FWD_DEFINED__
+typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
+
+#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
+#define __ID3D12WorkGraphProperties_FWD_DEFINED__
+typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
+
+#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device5_FWD_DEFINED__
+#define __ID3D12Device5_FWD_DEFINED__
+typedef interface ID3D12Device5 ID3D12Device5;
+
+#endif /* __ID3D12Device5_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedDataSettings2 ID3D12DeviceRemovedExtendedDataSettings2;
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
+
+#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
+
+#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
+typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
+
+#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device6_FWD_DEFINED__
+#define __ID3D12Device6_FWD_DEFINED__
+typedef interface ID3D12Device6 ID3D12Device6;
+
+#endif /* __ID3D12Device6_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
+#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
+typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
+
+#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device7_FWD_DEFINED__
+#define __ID3D12Device7_FWD_DEFINED__
+typedef interface ID3D12Device7 ID3D12Device7;
+
+#endif /* __ID3D12Device7_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device8_FWD_DEFINED__
+#define __ID3D12Device8_FWD_DEFINED__
+typedef interface ID3D12Device8 ID3D12Device8;
+
+#endif /* __ID3D12Device8_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Resource1_FWD_DEFINED__
+#define __ID3D12Resource1_FWD_DEFINED__
+typedef interface ID3D12Resource1 ID3D12Resource1;
+
+#endif /* __ID3D12Resource1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Resource2_FWD_DEFINED__
+#define __ID3D12Resource2_FWD_DEFINED__
+typedef interface ID3D12Resource2 ID3D12Resource2;
+
+#endif /* __ID3D12Resource2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Heap1_FWD_DEFINED__
+#define __ID3D12Heap1_FWD_DEFINED__
+typedef interface ID3D12Heap1 ID3D12Heap1;
+
+#endif /* __ID3D12Heap1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
+
+#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12MetaCommand_FWD_DEFINED__
+#define __ID3D12MetaCommand_FWD_DEFINED__
+typedef interface ID3D12MetaCommand ID3D12MetaCommand;
+
+#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
+
+#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
+#define __ID3D12ShaderCacheSession_FWD_DEFINED__
+typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
+
+#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device9_FWD_DEFINED__
+#define __ID3D12Device9_FWD_DEFINED__
+typedef interface ID3D12Device9 ID3D12Device9;
+
+#endif /* __ID3D12Device9_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device10_FWD_DEFINED__
+#define __ID3D12Device10_FWD_DEFINED__
+typedef interface ID3D12Device10 ID3D12Device10;
+
+#endif /* __ID3D12Device10_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device11_FWD_DEFINED__
+#define __ID3D12Device11_FWD_DEFINED__
+typedef interface ID3D12Device11 ID3D12Device11;
+
+#endif /* __ID3D12Device11_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device12_FWD_DEFINED__
+#define __ID3D12Device12_FWD_DEFINED__
+typedef interface ID3D12Device12 ID3D12Device12;
+
+#endif /* __ID3D12Device12_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device13_FWD_DEFINED__
+#define __ID3D12Device13_FWD_DEFINED__
+typedef interface ID3D12Device13 ID3D12Device13;
+
+#endif /* __ID3D12Device13_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Device14_FWD_DEFINED__
+#define __ID3D12Device14_FWD_DEFINED__
+typedef interface ID3D12Device14 ID3D12Device14;
+
+#endif /* __ID3D12Device14_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
+#define __ID3D12StateObjectDatabase_FWD_DEFINED__
+typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
+
+#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
+#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
+typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
+
+#endif /* __ID3D12VirtualizationGuestDevice_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Tools_FWD_DEFINED__
+#define __ID3D12Tools_FWD_DEFINED__
+typedef interface ID3D12Tools ID3D12Tools;
+
+#endif /* __ID3D12Tools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Tools1_FWD_DEFINED__
+#define __ID3D12Tools1_FWD_DEFINED__
+typedef interface ID3D12Tools1 ID3D12Tools1;
+
+#endif /* __ID3D12Tools1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Tools2_FWD_DEFINED__
+#define __ID3D12Tools2_FWD_DEFINED__
+typedef interface ID3D12Tools2 ID3D12Tools2;
+
+#endif /* __ID3D12Tools2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_FWD_DEFINED__
+#define __ID3D12PageableTools_FWD_DEFINED__
+typedef interface ID3D12PageableTools ID3D12PageableTools;
+
+#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_FWD_DEFINED__
+#define __ID3D12DeviceTools_FWD_DEFINED__
+typedef interface ID3D12DeviceTools ID3D12DeviceTools;
+
+#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
+#define __ID3D12DeviceTools1_FWD_DEFINED__
+typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
+
+#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
+#define __ID3D12SDKConfiguration_FWD_DEFINED__
+typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
+
+#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12SDKConfiguration1_FWD_DEFINED__
+#define __ID3D12SDKConfiguration1_FWD_DEFINED__
+typedef interface ID3D12SDKConfiguration1 ID3D12SDKConfiguration1;
+
+#endif /* __ID3D12SDKConfiguration1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceFactory_FWD_DEFINED__
+#define __ID3D12DeviceFactory_FWD_DEFINED__
+typedef interface ID3D12DeviceFactory ID3D12DeviceFactory;
+
+#endif /* __ID3D12DeviceFactory_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceConfiguration_FWD_DEFINED__
+#define __ID3D12DeviceConfiguration_FWD_DEFINED__
+typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
+
+#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
+#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
+typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
+
+#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
+#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
+typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
+
+#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
+
+#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
+
+#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
+
+#endif /* __ID3D12GraphicsCommandList7_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList8_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList8_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList8 ID3D12GraphicsCommandList8;
+
+#endif /* __ID3D12GraphicsCommandList8_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList9_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList9_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
+
+#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
+
+#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
+#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
+typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
+
+#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
+#define __ID3D12GBVDiagnostics_FWD_DEFINED__
+typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
+
+#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "dxgicommon.h"
+#include "dxgiformat.h"
+#include "d3dcommon.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12_0000_0000 */
+/* [local] */
+
+#include
+#pragma region App Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+#ifndef _D3D12_CONSTANTS
+#define _D3D12_CONSTANTS
+#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
+
+#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
+
+#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
+
+#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
+
+#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
+
+#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
+
+#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
+
+#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
+
+#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
+
+#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
+
+#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
+
+#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
+
+#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
+
+#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
+
+#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
+
+#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
+
+#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
+
+#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
+
+#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
+
+#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
+
+#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
+
+#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
+
+#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
+
+#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
+
+#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
+
+#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
+
+#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
+
+#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
+
+#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
+
+#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
+
+#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
+
+#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
+
+#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
+
+#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
+
+#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
+
+#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
+
+#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
+
+#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
+
+#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
+
+#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
+
+#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
+
+#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
+
+#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
+
+#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
+
+#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
+
+#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
+
+#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
+
+#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
+
+#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
+
+#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
+
+#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
+
+#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
+
+#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
+
+#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
+
+#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
+
+#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
+
+#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
+
+#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
+
+#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
+
+#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
+
+#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
+
+#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
+
+#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
+
+#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
+
+#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
+
+#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
+
+#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
+
+#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
+
+#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
+
+#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
+
+#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
+
+#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
+
+#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
+
+#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
+
+#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
+
+#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
+
+#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
+#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
+#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
+#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
+#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
+#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
+
+#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
+#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
+
+#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
+#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
+
+#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
+
+#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
+
+#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
+
+#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
+
+#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
+
+#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
+
+#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
+
+#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
+#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
+
+#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
+
+#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
+
+#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
+
+#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
+
+#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
+#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
+#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
+
+#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
+
+#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
+
+#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
+
+#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
+
+#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
+
+#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
+
+#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
+
+#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
+
+#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
+#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
+#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
+#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
+#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
+#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
+#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
+#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
+#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
+#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
+#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
+#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
+#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
+#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
+
+#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
+
+#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
+
+#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
+
+#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
+
+#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
+
+#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
+
+#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
+
+#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
+
+#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
+#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
+#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
+
+#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
+
+#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
+
+#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
+
+#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
+
+#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
+
+#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
+
+#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
+
+#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
+
+#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
+
+#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
+
+#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
+
+#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
+
+#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
+
+#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
+
+#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
+
+#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
+
+#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
+
+#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
+
+#define D3D12_LINEAR_GAMMA ( 1.0f )
+#define D3D12_MAJOR_VERSION ( 12 )
+
+#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
+#define D3D12_MAX_DEPTH ( 1.0f )
+#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
+
+#define D3D12_MAX_MAXANISOTROPY ( 16 )
+
+#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
+
+#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
+#define D3D12_MAX_ROOT_COST ( 64 )
+
+#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
+
+#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
+
+#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
+
+#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
+
+#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
+
+#define D3D12_MINOR_VERSION ( 0 )
+
+#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
+#define D3D12_MIN_DEPTH ( 0.0f )
+#define D3D12_MIN_MAXANISOTROPY ( 0 )
+
+#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
+#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
+#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
+
+#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
+
+#define D3D12_MS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 4194303 )
+
+#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
+#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
+
+#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
+
+#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
+
+#define D3D12_PACKED_TILE ( 0xffffffff )
+
+#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
+
+#define D3D12_PREVIEW_SDK_VERSION ( 717 )
+
+#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
+
+#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
+
+#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
+
+#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
+
+#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
+
+#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
+#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
+
+#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
+
+#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
+
+#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
+
+#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
+#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
+
+#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
+
+#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
+
+#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
+
+#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
+
+#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
+
+#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
+
+#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
+
+#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
+
+#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
+
+#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
+
+#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
+
+#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
+
+#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
+
+#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
+
+#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
+
+#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
+
+#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
+
+#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
+
+#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
+
+#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
+
+#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
+
+#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
+
+#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
+
+#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
+
+#define D3D12_REQ_MAXANISOTROPY ( 16 )
+
+#define D3D12_REQ_MIP_LEVELS ( 15 )
+
+#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
+
+#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
+
+#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
+
+#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
+
+#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
+#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
+
+#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
+
+#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
+
+#define D3D12_REQ_SUBRESOURCES ( 30720 )
+
+#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
+
+#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
+
+#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
+
+#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
+
+#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
+
+#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
+
+#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
+
+#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
+
+#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
+
+#define D3D12_SDK_VERSION ( 618 )
+
+#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
+
+#define D3D12_SHADER_MAJOR_VERSION ( 5 )
+
+#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
+
+#define D3D12_SHADER_MAX_INTERFACES ( 253 )
+
+#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
+
+#define D3D12_SHADER_MAX_TYPES ( 65535 )
+
+#define D3D12_SHADER_MINOR_VERSION ( 1 )
+
+#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
+
+#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
+
+#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
+
+#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
+
+#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
+
+#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
+
+#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
+
+#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
+
+#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
+
+#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
+
+#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
+
+#define D3D12_SO_STREAM_COUNT ( 4 )
+
+#define D3D12_SPEC_DATE_DAY ( 14 )
+
+#define D3D12_SPEC_DATE_MONTH ( 11 )
+
+#define D3D12_SPEC_DATE_YEAR ( 2014 )
+
+#define D3D12_SPEC_VERSION ( 1.16 )
+#define D3D12_SRGB_GAMMA ( 2.2f )
+#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
+#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
+#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
+#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
+#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
+#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
+#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
+
+#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
+
+#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
+
+#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
+
+#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
+
+#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
+
+#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
+
+#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
+
+#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
+
+#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
+
+#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
+
+#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
+
+#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
+
+#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
+
+#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
+
+#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
+
+#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
+
+#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
+
+#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
+
+#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
+
+#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
+
+#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
+
+#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
+
+#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
+
+#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
+
+#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
+
+#define D3D12_UAV_SLOT_COUNT ( 64 )
+
+#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
+
+#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
+
+#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
+
+#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
+
+#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
+
+#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
+
+#define D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX ( 0xff )
+
+#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS ( 64 )
+
+#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS ( 64 )
+
+#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN ( 9 )
+
+#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM ( 8 )
+
+#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
+
+#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
+
+#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
+
+#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
+
+#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
+
+#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
+
+#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
+
+#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
+
+#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
+
+#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
+
+#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
+
+#define D3D12_WORK_GRAPHS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 16777215 )
+
+#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
+
+#endif
+
+typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
+
+typedef
+enum D3D12_COMMAND_LIST_TYPE
+ {
+ D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
+ D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
+ D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
+ D3D12_COMMAND_LIST_TYPE_COPY = 3,
+ D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
+ D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
+ D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
+ D3D12_COMMAND_LIST_TYPE_NONE = -1
+ } D3D12_COMMAND_LIST_TYPE;
+
+typedef
+enum D3D12_COMMAND_QUEUE_FLAGS
+ {
+ D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
+ D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
+ D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
+ } D3D12_COMMAND_QUEUE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
+typedef
+enum D3D12_COMMAND_QUEUE_PRIORITY
+ {
+ D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
+ D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
+ D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
+ } D3D12_COMMAND_QUEUE_PRIORITY;
+
+typedef struct D3D12_COMMAND_QUEUE_DESC
+ {
+ D3D12_COMMAND_LIST_TYPE Type;
+ INT Priority;
+ D3D12_COMMAND_QUEUE_FLAGS Flags;
+ UINT NodeMask;
+ } D3D12_COMMAND_QUEUE_DESC;
+
+typedef
+enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
+ {
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
+ } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
+
+typedef
+enum D3D12_INPUT_CLASSIFICATION
+ {
+ D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
+ D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
+ } D3D12_INPUT_CLASSIFICATION;
+
+typedef struct D3D12_INPUT_ELEMENT_DESC
+ {
+ LPCSTR SemanticName;
+ UINT SemanticIndex;
+ DXGI_FORMAT Format;
+ UINT InputSlot;
+ UINT AlignedByteOffset;
+ D3D12_INPUT_CLASSIFICATION InputSlotClass;
+ UINT InstanceDataStepRate;
+ } D3D12_INPUT_ELEMENT_DESC;
+
+typedef
+enum D3D12_FILL_MODE
+ {
+ D3D12_FILL_MODE_WIREFRAME = 2,
+ D3D12_FILL_MODE_SOLID = 3
+ } D3D12_FILL_MODE;
+
+typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
+
+typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
+
+typedef
+enum D3D12_CULL_MODE
+ {
+ D3D12_CULL_MODE_NONE = 1,
+ D3D12_CULL_MODE_FRONT = 2,
+ D3D12_CULL_MODE_BACK = 3
+ } D3D12_CULL_MODE;
+
+typedef struct D3D12_SO_DECLARATION_ENTRY
+ {
+ UINT Stream;
+ LPCSTR SemanticName;
+ UINT SemanticIndex;
+ BYTE StartComponent;
+ BYTE ComponentCount;
+ BYTE OutputSlot;
+ } D3D12_SO_DECLARATION_ENTRY;
+
+typedef struct D3D12_VIEWPORT
+ {
+ FLOAT TopLeftX;
+ FLOAT TopLeftY;
+ FLOAT Width;
+ FLOAT Height;
+ FLOAT MinDepth;
+ FLOAT MaxDepth;
+ } D3D12_VIEWPORT;
+
+typedef RECT D3D12_RECT;
+
+typedef struct D3D12_BOX
+ {
+ UINT left;
+ UINT top;
+ UINT front;
+ UINT right;
+ UINT bottom;
+ UINT back;
+ } D3D12_BOX;
+
+#ifdef __midl
+#ifndef LUID_DEFINED
+#define LUID_DEFINED 1
+typedef struct __LUID
+ {
+ DWORD LowPart;
+ LONG HighPart;
+ } LUID;
+
+typedef struct __LUID *PLUID;
+
+#endif
+#endif
+typedef
+enum D3D12_COMPARISON_FUNC
+ {
+ D3D12_COMPARISON_FUNC_NONE = 0,
+ D3D12_COMPARISON_FUNC_NEVER = 1,
+ D3D12_COMPARISON_FUNC_LESS = 2,
+ D3D12_COMPARISON_FUNC_EQUAL = 3,
+ D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
+ D3D12_COMPARISON_FUNC_GREATER = 5,
+ D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
+ D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
+ D3D12_COMPARISON_FUNC_ALWAYS = 8
+ } D3D12_COMPARISON_FUNC;
+
+typedef
+enum D3D12_DEPTH_WRITE_MASK
+ {
+ D3D12_DEPTH_WRITE_MASK_ZERO = 0,
+ D3D12_DEPTH_WRITE_MASK_ALL = 1
+ } D3D12_DEPTH_WRITE_MASK;
+
+typedef
+enum D3D12_STENCIL_OP
+ {
+ D3D12_STENCIL_OP_KEEP = 1,
+ D3D12_STENCIL_OP_ZERO = 2,
+ D3D12_STENCIL_OP_REPLACE = 3,
+ D3D12_STENCIL_OP_INCR_SAT = 4,
+ D3D12_STENCIL_OP_DECR_SAT = 5,
+ D3D12_STENCIL_OP_INVERT = 6,
+ D3D12_STENCIL_OP_INCR = 7,
+ D3D12_STENCIL_OP_DECR = 8
+ } D3D12_STENCIL_OP;
+
+typedef struct D3D12_DEPTH_STENCILOP_DESC
+ {
+ D3D12_STENCIL_OP StencilFailOp;
+ D3D12_STENCIL_OP StencilDepthFailOp;
+ D3D12_STENCIL_OP StencilPassOp;
+ D3D12_COMPARISON_FUNC StencilFunc;
+ } D3D12_DEPTH_STENCILOP_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC
+ {
+ BOOL DepthEnable;
+ D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+ D3D12_COMPARISON_FUNC DepthFunc;
+ BOOL StencilEnable;
+ UINT8 StencilReadMask;
+ UINT8 StencilWriteMask;
+ D3D12_DEPTH_STENCILOP_DESC FrontFace;
+ D3D12_DEPTH_STENCILOP_DESC BackFace;
+ } D3D12_DEPTH_STENCIL_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC1
+ {
+ BOOL DepthEnable;
+ D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+ D3D12_COMPARISON_FUNC DepthFunc;
+ BOOL StencilEnable;
+ UINT8 StencilReadMask;
+ UINT8 StencilWriteMask;
+ D3D12_DEPTH_STENCILOP_DESC FrontFace;
+ D3D12_DEPTH_STENCILOP_DESC BackFace;
+ BOOL DepthBoundsTestEnable;
+ } D3D12_DEPTH_STENCIL_DESC1;
+
+typedef struct D3D12_DEPTH_STENCILOP_DESC1
+ {
+ D3D12_STENCIL_OP StencilFailOp;
+ D3D12_STENCIL_OP StencilDepthFailOp;
+ D3D12_STENCIL_OP StencilPassOp;
+ D3D12_COMPARISON_FUNC StencilFunc;
+ UINT8 StencilReadMask;
+ UINT8 StencilWriteMask;
+ } D3D12_DEPTH_STENCILOP_DESC1;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC2
+ {
+ BOOL DepthEnable;
+ D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+ D3D12_COMPARISON_FUNC DepthFunc;
+ BOOL StencilEnable;
+ D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
+ D3D12_DEPTH_STENCILOP_DESC1 BackFace;
+ BOOL DepthBoundsTestEnable;
+ } D3D12_DEPTH_STENCIL_DESC2;
+
+typedef
+enum D3D12_BLEND
+ {
+ D3D12_BLEND_ZERO = 1,
+ D3D12_BLEND_ONE = 2,
+ D3D12_BLEND_SRC_COLOR = 3,
+ D3D12_BLEND_INV_SRC_COLOR = 4,
+ D3D12_BLEND_SRC_ALPHA = 5,
+ D3D12_BLEND_INV_SRC_ALPHA = 6,
+ D3D12_BLEND_DEST_ALPHA = 7,
+ D3D12_BLEND_INV_DEST_ALPHA = 8,
+ D3D12_BLEND_DEST_COLOR = 9,
+ D3D12_BLEND_INV_DEST_COLOR = 10,
+ D3D12_BLEND_SRC_ALPHA_SAT = 11,
+ D3D12_BLEND_BLEND_FACTOR = 14,
+ D3D12_BLEND_INV_BLEND_FACTOR = 15,
+ D3D12_BLEND_SRC1_COLOR = 16,
+ D3D12_BLEND_INV_SRC1_COLOR = 17,
+ D3D12_BLEND_SRC1_ALPHA = 18,
+ D3D12_BLEND_INV_SRC1_ALPHA = 19,
+ D3D12_BLEND_ALPHA_FACTOR = 20,
+ D3D12_BLEND_INV_ALPHA_FACTOR = 21
+ } D3D12_BLEND;
+
+typedef
+enum D3D12_BLEND_OP
+ {
+ D3D12_BLEND_OP_ADD = 1,
+ D3D12_BLEND_OP_SUBTRACT = 2,
+ D3D12_BLEND_OP_REV_SUBTRACT = 3,
+ D3D12_BLEND_OP_MIN = 4,
+ D3D12_BLEND_OP_MAX = 5
+ } D3D12_BLEND_OP;
+
+typedef
+enum D3D12_COLOR_WRITE_ENABLE
+ {
+ D3D12_COLOR_WRITE_ENABLE_RED = 1,
+ D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
+ D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
+ D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
+ D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
+ } D3D12_COLOR_WRITE_ENABLE;
+
+typedef
+enum D3D12_LOGIC_OP
+ {
+ D3D12_LOGIC_OP_CLEAR = 0,
+ D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
+ D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
+ D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
+ D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
+ D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
+ D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
+ D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
+ D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
+ D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
+ D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
+ D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
+ D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
+ D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
+ D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
+ D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
+ } D3D12_LOGIC_OP;
+
+typedef struct D3D12_RENDER_TARGET_BLEND_DESC
+ {
+ BOOL BlendEnable;
+ BOOL LogicOpEnable;
+ D3D12_BLEND SrcBlend;
+ D3D12_BLEND DestBlend;
+ D3D12_BLEND_OP BlendOp;
+ D3D12_BLEND SrcBlendAlpha;
+ D3D12_BLEND DestBlendAlpha;
+ D3D12_BLEND_OP BlendOpAlpha;
+ D3D12_LOGIC_OP LogicOp;
+ UINT8 RenderTargetWriteMask;
+ } D3D12_RENDER_TARGET_BLEND_DESC;
+
+typedef struct D3D12_BLEND_DESC
+ {
+ BOOL AlphaToCoverageEnable;
+ BOOL IndependentBlendEnable;
+ D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
+ } D3D12_BLEND_DESC;
+
+/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
+ IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
+typedef
+enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
+ {
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
+ } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
+
+typedef struct D3D12_RASTERIZER_DESC
+ {
+ D3D12_FILL_MODE FillMode;
+ D3D12_CULL_MODE CullMode;
+ BOOL FrontCounterClockwise;
+ INT DepthBias;
+ FLOAT DepthBiasClamp;
+ FLOAT SlopeScaledDepthBias;
+ BOOL DepthClipEnable;
+ BOOL MultisampleEnable;
+ BOOL AntialiasedLineEnable;
+ UINT ForcedSampleCount;
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+ } D3D12_RASTERIZER_DESC;
+
+typedef struct D3D12_RASTERIZER_DESC1
+ {
+ D3D12_FILL_MODE FillMode;
+ D3D12_CULL_MODE CullMode;
+ BOOL FrontCounterClockwise;
+ FLOAT DepthBias;
+ FLOAT DepthBiasClamp;
+ FLOAT SlopeScaledDepthBias;
+ BOOL DepthClipEnable;
+ BOOL MultisampleEnable;
+ BOOL AntialiasedLineEnable;
+ UINT ForcedSampleCount;
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+ } D3D12_RASTERIZER_DESC1;
+
+typedef
+enum D3D12_LINE_RASTERIZATION_MODE
+ {
+ D3D12_LINE_RASTERIZATION_MODE_ALIASED = 0,
+ D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED = ( D3D12_LINE_RASTERIZATION_MODE_ALIASED + 1 ) ,
+ D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE = ( D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED + 1 ) ,
+ D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW = ( D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE + 1 )
+ } D3D12_LINE_RASTERIZATION_MODE;
+
+typedef struct D3D12_RASTERIZER_DESC2
+ {
+ D3D12_FILL_MODE FillMode;
+ D3D12_CULL_MODE CullMode;
+ BOOL FrontCounterClockwise;
+ FLOAT DepthBias;
+ FLOAT DepthBiasClamp;
+ FLOAT SlopeScaledDepthBias;
+ BOOL DepthClipEnable;
+ D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
+ UINT ForcedSampleCount;
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+ } D3D12_RASTERIZER_DESC2;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12Object_INTERFACE_DEFINED__
+#define __ID3D12Object_INTERFACE_DEFINED__
+
+/* interface ID3D12Object */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Object;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
+ ID3D12Object : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetName(
+ _In_z_ LPCWSTR Name) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Object * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Object * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Object * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Object * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Object * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Object * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Object * This,
+ _In_z_ LPCWSTR Name);
+
+ END_INTERFACE
+ } ID3D12ObjectVtbl;
+
+ interface ID3D12Object
+ {
+ CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Object_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Object_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Object_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
+#define __ID3D12DeviceChild_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceChild */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceChild;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
+ ID3D12DeviceChild : public ID3D12Object
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetDevice(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceChildVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceChild * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceChild * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceChild * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12DeviceChild * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12DeviceChild * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12DeviceChild * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12DeviceChild * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12DeviceChild * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12DeviceChildVtbl;
+
+ interface ID3D12DeviceChild
+ {
+ CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceChild_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceChild_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12DeviceChild_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
+#define __ID3D12RootSignature_INTERFACE_DEFINED__
+
+/* interface ID3D12RootSignature */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12RootSignature;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
+ ID3D12RootSignature : public ID3D12DeviceChild
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12RootSignatureVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12RootSignature * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12RootSignature * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12RootSignature * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12RootSignature * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12RootSignature * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12RootSignature * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12RootSignature * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12RootSignature * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12RootSignatureVtbl;
+
+ interface ID3D12RootSignature
+ {
+ CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12RootSignature_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12RootSignature_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12RootSignature_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0001 */
+/* [local] */
+
+typedef struct D3D12_SHADER_BYTECODE
+ {
+ _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
+ SIZE_T BytecodeLength;
+ } D3D12_SHADER_BYTECODE;
+
+typedef struct D3D12_STREAM_OUTPUT_DESC
+ {
+ _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
+ UINT NumEntries;
+ _Field_size_full_(NumStrides) const UINT *pBufferStrides;
+ UINT NumStrides;
+ UINT RasterizedStream;
+ } D3D12_STREAM_OUTPUT_DESC;
+
+typedef struct D3D12_INPUT_LAYOUT_DESC
+ {
+ _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
+ UINT NumElements;
+ } D3D12_INPUT_LAYOUT_DESC;
+
+typedef
+enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
+ {
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
+ } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
+
+typedef
+enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
+ {
+ D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+ D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
+ } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
+
+typedef struct D3D12_CACHED_PIPELINE_STATE
+ {
+ _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
+ SIZE_T CachedBlobSizeInBytes;
+ } D3D12_CACHED_PIPELINE_STATE;
+
+typedef
+enum D3D12_PIPELINE_STATE_FLAGS
+ {
+ D3D12_PIPELINE_STATE_FLAG_NONE = 0,
+ D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
+ D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
+ D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
+ } D3D12_PIPELINE_STATE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
+typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ {
+ ID3D12RootSignature *pRootSignature;
+ D3D12_SHADER_BYTECODE VS;
+ D3D12_SHADER_BYTECODE PS;
+ D3D12_SHADER_BYTECODE DS;
+ D3D12_SHADER_BYTECODE HS;
+ D3D12_SHADER_BYTECODE GS;
+ D3D12_STREAM_OUTPUT_DESC StreamOutput;
+ D3D12_BLEND_DESC BlendState;
+ UINT SampleMask;
+ D3D12_RASTERIZER_DESC RasterizerState;
+ D3D12_DEPTH_STENCIL_DESC DepthStencilState;
+ D3D12_INPUT_LAYOUT_DESC InputLayout;
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
+ UINT NumRenderTargets;
+ DXGI_FORMAT RTVFormats[ 8 ];
+ DXGI_FORMAT DSVFormat;
+ DXGI_SAMPLE_DESC SampleDesc;
+ UINT NodeMask;
+ D3D12_CACHED_PIPELINE_STATE CachedPSO;
+ D3D12_PIPELINE_STATE_FLAGS Flags;
+ } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
+
+typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
+ {
+ ID3D12RootSignature *pRootSignature;
+ D3D12_SHADER_BYTECODE CS;
+ UINT NodeMask;
+ D3D12_CACHED_PIPELINE_STATE CachedPSO;
+ D3D12_PIPELINE_STATE_FLAGS Flags;
+ } D3D12_COMPUTE_PIPELINE_STATE_DESC;
+
+typedef
+enum D3D_ROOT_SIGNATURE_VERSION
+ {
+ D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
+ D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
+ D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
+ D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
+ } D3D_ROOT_SIGNATURE_VERSION;
+
+typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
+ {
+ _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
+ SIZE_T SerializedBlobSizeInBytes;
+ } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
+
+typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
+ {
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
+ } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
+
+typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
+ {
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
+ } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
+
+struct D3D12_RT_FORMAT_ARRAY
+ {
+ DXGI_FORMAT RTFormats[ 8 ];
+ UINT NumRenderTargets;
+ } ;
+typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
+ {
+ _In_ SIZE_T SizeInBytes;
+ _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
+ } D3D12_PIPELINE_STATE_STREAM_DESC;
+
+typedef
+enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
+ {
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
+ } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
+
+typedef
+enum D3D12_FEATURE
+ {
+ D3D12_FEATURE_D3D12_OPTIONS = 0,
+ D3D12_FEATURE_ARCHITECTURE = 1,
+ D3D12_FEATURE_FEATURE_LEVELS = 2,
+ D3D12_FEATURE_FORMAT_SUPPORT = 3,
+ D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
+ D3D12_FEATURE_FORMAT_INFO = 5,
+ D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
+ D3D12_FEATURE_SHADER_MODEL = 7,
+ D3D12_FEATURE_D3D12_OPTIONS1 = 8,
+ D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
+ D3D12_FEATURE_ROOT_SIGNATURE = 12,
+ D3D12_FEATURE_ARCHITECTURE1 = 16,
+ D3D12_FEATURE_D3D12_OPTIONS2 = 18,
+ D3D12_FEATURE_SHADER_CACHE = 19,
+ D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
+ D3D12_FEATURE_D3D12_OPTIONS3 = 21,
+ D3D12_FEATURE_EXISTING_HEAPS = 22,
+ D3D12_FEATURE_D3D12_OPTIONS4 = 23,
+ D3D12_FEATURE_SERIALIZATION = 24,
+ D3D12_FEATURE_CROSS_NODE = 25,
+ D3D12_FEATURE_D3D12_OPTIONS5 = 27,
+ D3D12_FEATURE_DISPLAYABLE = 28,
+ D3D12_FEATURE_D3D12_OPTIONS6 = 30,
+ D3D12_FEATURE_QUERY_META_COMMAND = 31,
+ D3D12_FEATURE_D3D12_OPTIONS7 = 32,
+ D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
+ D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
+ D3D12_FEATURE_D3D12_OPTIONS8 = 36,
+ D3D12_FEATURE_D3D12_OPTIONS9 = 37,
+ D3D12_FEATURE_D3D12_OPTIONS10 = 39,
+ D3D12_FEATURE_D3D12_OPTIONS11 = 40,
+ D3D12_FEATURE_D3D12_OPTIONS12 = 41,
+ D3D12_FEATURE_D3D12_OPTIONS13 = 42,
+ D3D12_FEATURE_D3D12_OPTIONS14 = 43,
+ D3D12_FEATURE_D3D12_OPTIONS15 = 44,
+ D3D12_FEATURE_D3D12_OPTIONS16 = 45,
+ D3D12_FEATURE_D3D12_OPTIONS17 = 46,
+ D3D12_FEATURE_D3D12_OPTIONS18 = 47,
+ D3D12_FEATURE_D3D12_OPTIONS19 = 48,
+ D3D12_FEATURE_D3D12_OPTIONS20 = 49,
+ D3D12_FEATURE_PREDICATION = 50,
+ D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
+ D3D12_FEATURE_HARDWARE_COPY = 52,
+ D3D12_FEATURE_D3D12_OPTIONS21 = 53,
+ D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
+ D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
+ D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
+ D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
+ } D3D12_FEATURE;
+
+typedef
+enum D3D12_SHADER_MIN_PRECISION_SUPPORT
+ {
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
+ } D3D12_SHADER_MIN_PRECISION_SUPPORT;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
+typedef
+enum D3D12_TILED_RESOURCES_TIER
+ {
+ D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
+ D3D12_TILED_RESOURCES_TIER_1 = 1,
+ D3D12_TILED_RESOURCES_TIER_2 = 2,
+ D3D12_TILED_RESOURCES_TIER_3 = 3,
+ D3D12_TILED_RESOURCES_TIER_4 = 4
+ } D3D12_TILED_RESOURCES_TIER;
+
+typedef
+enum D3D12_RESOURCE_BINDING_TIER
+ {
+ D3D12_RESOURCE_BINDING_TIER_1 = 1,
+ D3D12_RESOURCE_BINDING_TIER_2 = 2,
+ D3D12_RESOURCE_BINDING_TIER_3 = 3
+ } D3D12_RESOURCE_BINDING_TIER;
+
+typedef
+enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
+ {
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
+ } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
+
+typedef
+enum D3D12_FORMAT_SUPPORT1
+ {
+ D3D12_FORMAT_SUPPORT1_NONE = 0,
+ D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
+ D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
+ D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
+ D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
+ D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
+ D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
+ D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
+ D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
+ D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
+ D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
+ D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
+ D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
+ D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
+ D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
+ D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
+ D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
+ D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
+ D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
+ D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
+ D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
+ } D3D12_FORMAT_SUPPORT1;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
+typedef
+enum D3D12_FORMAT_SUPPORT2
+ {
+ D3D12_FORMAT_SUPPORT2_NONE = 0,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
+ D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
+ D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
+ D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
+ D3D12_FORMAT_SUPPORT2_TILED = 0x200,
+ D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
+ D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
+ D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
+ } D3D12_FORMAT_SUPPORT2;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
+typedef
+enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
+ {
+ D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
+ D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
+ } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
+typedef
+enum D3D12_CROSS_NODE_SHARING_TIER
+ {
+ D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
+ D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
+ D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
+ D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
+ D3D12_CROSS_NODE_SHARING_TIER_3 = 4
+ } D3D12_CROSS_NODE_SHARING_TIER;
+
+typedef
+enum D3D12_RESOURCE_HEAP_TIER
+ {
+ D3D12_RESOURCE_HEAP_TIER_1 = 1,
+ D3D12_RESOURCE_HEAP_TIER_2 = 2
+ } D3D12_RESOURCE_HEAP_TIER;
+
+typedef
+enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
+ {
+ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
+ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
+ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
+ } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
+
+typedef
+enum D3D12_VIEW_INSTANCING_TIER
+ {
+ D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
+ D3D12_VIEW_INSTANCING_TIER_1 = 1,
+ D3D12_VIEW_INSTANCING_TIER_2 = 2,
+ D3D12_VIEW_INSTANCING_TIER_3 = 3
+ } D3D12_VIEW_INSTANCING_TIER;
+
+typedef
+enum D3D12_WORK_GRAPHS_TIER
+ {
+ D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
+ D3D12_WORK_GRAPHS_TIER_1_0 = 10
+ } D3D12_WORK_GRAPHS_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
+ {
+ _Out_ BOOL DoublePrecisionFloatShaderOps;
+ _Out_ BOOL OutputMergerLogicOp;
+ _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
+ _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
+ _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
+ _Out_ BOOL PSSpecifiedStencilRefSupported;
+ _Out_ BOOL TypedUAVLoadAdditionalFormats;
+ _Out_ BOOL ROVsSupported;
+ _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
+ _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
+ _Out_ BOOL StandardSwizzle64KBSupported;
+ _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
+ _Out_ BOOL CrossAdapterRowMajorTextureSupported;
+ _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
+ _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
+ {
+ _Out_ BOOL WaveOps;
+ _Out_ UINT WaveLaneCountMin;
+ _Out_ UINT WaveLaneCountMax;
+ _Out_ UINT TotalLaneCount;
+ _Out_ BOOL ExpandedComputeResourceStates;
+ _Out_ BOOL Int64ShaderOps;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
+ {
+ _Out_ BOOL DepthBoundsTestSupported;
+ _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
+
+typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
+ {
+ _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
+ } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
+
+typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
+ {
+ _In_ UINT NodeIndex;
+ _Out_ BOOL TileBasedRenderer;
+ _Out_ BOOL UMA;
+ _Out_ BOOL CacheCoherentUMA;
+ } D3D12_FEATURE_DATA_ARCHITECTURE;
+
+typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
+ {
+ _In_ UINT NodeIndex;
+ _Out_ BOOL TileBasedRenderer;
+ _Out_ BOOL UMA;
+ _Out_ BOOL CacheCoherentUMA;
+ _Out_ BOOL IsolatedMMU;
+ } D3D12_FEATURE_DATA_ARCHITECTURE1;
+
+typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
+ {
+ _In_ UINT NumFeatureLevels;
+ _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
+ _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
+ } D3D12_FEATURE_DATA_FEATURE_LEVELS;
+
+typedef
+enum D3D_SHADER_MODEL
+ {
+ D3D_SHADER_MODEL_NONE = 0,
+ D3D_SHADER_MODEL_5_1 = 0x51,
+ D3D_SHADER_MODEL_6_0 = 0x60,
+ D3D_SHADER_MODEL_6_1 = 0x61,
+ D3D_SHADER_MODEL_6_2 = 0x62,
+ D3D_SHADER_MODEL_6_3 = 0x63,
+ D3D_SHADER_MODEL_6_4 = 0x64,
+ D3D_SHADER_MODEL_6_5 = 0x65,
+ D3D_SHADER_MODEL_6_6 = 0x66,
+ D3D_SHADER_MODEL_6_7 = 0x67,
+ D3D_SHADER_MODEL_6_8 = 0x68,
+ D3D_SHADER_MODEL_6_9 = 0x69,
+ D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
+ } D3D_SHADER_MODEL;
+
+typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
+ {
+ _Inout_ D3D_SHADER_MODEL HighestShaderModel;
+ } D3D12_FEATURE_DATA_SHADER_MODEL;
+
+typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
+ {
+ _In_ DXGI_FORMAT Format;
+ _Out_ D3D12_FORMAT_SUPPORT1 Support1;
+ _Out_ D3D12_FORMAT_SUPPORT2 Support2;
+ } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
+ {
+ _In_ DXGI_FORMAT Format;
+ _In_ UINT SampleCount;
+ _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
+ _Out_ UINT NumQualityLevels;
+ } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
+
+typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
+ {
+ DXGI_FORMAT Format;
+ UINT8 PlaneCount;
+ } D3D12_FEATURE_DATA_FORMAT_INFO;
+
+typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
+ {
+ UINT MaxGPUVirtualAddressBitsPerResource;
+ UINT MaxGPUVirtualAddressBitsPerProcess;
+ } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
+
+typedef
+enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
+ {
+ D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
+ D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
+ D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
+ D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
+ D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
+ D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
+ D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
+ D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
+ } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
+ {
+ _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_SHADER_CACHE;
+
+typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
+ {
+ _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
+ _In_ UINT Priority;
+ _Out_ BOOL PriorityForTypeIsSupported;
+ } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
+
+typedef
+enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
+ {
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
+ D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
+ } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
+ {
+ _Out_ BOOL CopyQueueTimestampQueriesSupported;
+ _Out_ BOOL CastingFullyTypedFormatSupported;
+ _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
+ _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
+ _Out_ BOOL BarycentricsSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
+
+typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_EXISTING_HEAPS;
+
+typedef
+enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
+ {
+ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
+ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
+ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 )
+ } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
+
+typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
+ {
+ _Out_ BOOL DisplayableTexture;
+ _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
+ } D3D12_FEATURE_DATA_DISPLAYABLE;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
+ {
+ _Out_ BOOL MSAA64KBAlignedTextureSupported;
+ _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
+ _Out_ BOOL Native16BitShaderOpsSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
+
+typedef
+enum D3D12_HEAP_SERIALIZATION_TIER
+ {
+ D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
+ D3D12_HEAP_SERIALIZATION_TIER_10 = 10
+ } D3D12_HEAP_SERIALIZATION_TIER;
+
+typedef struct D3D12_FEATURE_DATA_SERIALIZATION
+ {
+ _In_ UINT NodeIndex;
+ _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
+ } D3D12_FEATURE_DATA_SERIALIZATION;
+
+typedef struct D3D12_FEATURE_DATA_CROSS_NODE
+ {
+ D3D12_CROSS_NODE_SHARING_TIER SharingTier;
+ BOOL AtomicShaderInstructions;
+ } D3D12_FEATURE_DATA_CROSS_NODE;
+
+typedef
+enum D3D12_RENDER_PASS_TIER
+ {
+ D3D12_RENDER_PASS_TIER_0 = 0,
+ D3D12_RENDER_PASS_TIER_1 = 1,
+ D3D12_RENDER_PASS_TIER_2 = 2
+ } D3D12_RENDER_PASS_TIER;
+
+typedef
+enum D3D12_RAYTRACING_TIER
+ {
+ D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
+ D3D12_RAYTRACING_TIER_1_0 = 10,
+ D3D12_RAYTRACING_TIER_1_1 = 11,
+ D3D12_RAYTRACING_TIER_1_2 = 12
+ } D3D12_RAYTRACING_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
+ {
+ _Out_ BOOL SRVOnlyTiledResourceTier3;
+ _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
+ _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
+
+typedef
+enum D3D12_VARIABLE_SHADING_RATE_TIER
+ {
+ D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
+ D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
+ D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
+ } D3D12_VARIABLE_SHADING_RATE_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
+ {
+ _Out_ BOOL AdditionalShadingRatesSupported;
+ _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
+ _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
+ _Out_ UINT ShadingRateImageTileSize;
+ _Out_ BOOL BackgroundProcessingSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
+
+typedef
+enum D3D12_MESH_SHADER_TIER
+ {
+ D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
+ D3D12_MESH_SHADER_TIER_1 = 10
+ } D3D12_MESH_SHADER_TIER;
+
+typedef
+enum D3D12_SAMPLER_FEEDBACK_TIER
+ {
+ D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
+ D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
+ D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
+ } D3D12_SAMPLER_FEEDBACK_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
+ {
+ _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
+ _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
+
+typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
+ {
+ _In_ GUID CommandId;
+ _In_ UINT NodeMask;
+ _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
+ _In_ SIZE_T QueryInputDataSizeInBytes;
+ _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
+ _In_ SIZE_T QueryOutputDataSizeInBytes;
+ } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
+ {
+ _Out_ BOOL UnalignedBlockTexturesSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
+
+typedef
+enum D3D12_WAVE_MMA_TIER
+ {
+ D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
+ D3D12_WAVE_MMA_TIER_1_0 = 10
+ } D3D12_WAVE_MMA_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
+ {
+ _Out_ BOOL MeshShaderPipelineStatsSupported;
+ _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
+ _Out_ BOOL AtomicInt64OnTypedResourceSupported;
+ _Out_ BOOL AtomicInt64OnGroupSharedSupported;
+ _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
+ _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
+ {
+ _Out_ BOOL VariableRateShadingSumCombinerSupported;
+ _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
+ {
+ _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
+
+typedef
+enum D3D12_TRI_STATE
+ {
+ D3D12_TRI_STATE_UNKNOWN = -1,
+ D3D12_TRI_STATE_FALSE = 0,
+ D3D12_TRI_STATE_TRUE = 1
+ } D3D12_TRI_STATE;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
+ {
+ _Out_ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
+ _Out_ BOOL EnhancedBarriersSupported;
+ _Out_ BOOL RelaxedFormatCastingSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
+ {
+ _Out_ BOOL UnrestrictedBufferTextureCopyPitchSupported;
+ _Out_ BOOL UnrestrictedVertexElementAlignmentSupported;
+ _Out_ BOOL InvertedViewportHeightFlipsYSupported;
+ _Out_ BOOL InvertedViewportDepthFlipsZSupported;
+ _Out_ BOOL TextureCopyBetweenDimensionsSupported;
+ _Out_ BOOL AlphaBlendFactorSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
+ {
+ _Out_ BOOL AdvancedTextureOpsSupported;
+ _Out_ BOOL WriteableMSAATexturesSupported;
+ _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
+ {
+ _Out_ BOOL TriangleFanSupported;
+ _Out_ BOOL DynamicIndexBufferStripCutSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
+ {
+ _Out_ BOOL DynamicDepthBiasSupported;
+ _Out_ BOOL GPUUploadHeapSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
+ {
+ _Out_ BOOL NonNormalizedCoordinateSamplersSupported;
+ _Out_ BOOL ManualWriteTrackingResourceSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
+ {
+ _Out_ BOOL RenderPassesValid;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
+ {
+ BOOL MismatchingOutputDimensionsSupported;
+ UINT SupportedSampleCountsWithNoOutputs;
+ BOOL PointSamplingAddressesNeverRoundUp;
+ BOOL RasterizerDesc2Supported;
+ BOOL NarrowQuadrilateralLinesSupported;
+ BOOL AnisoFilterWithPointMipSupported;
+ UINT MaxSamplerDescriptorHeapSize;
+ UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
+ UINT MaxViewDescriptorHeapSize;
+ _Out_ BOOL ComputeOnlyCustomHeapSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
+
+typedef
+enum D3D12_RECREATE_AT_TIER
+ {
+ D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
+ D3D12_RECREATE_AT_TIER_1 = 1
+ } D3D12_RECREATE_AT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
+ {
+ _Out_ BOOL ComputeOnlyWriteWatchSupported;
+ D3D12_RECREATE_AT_TIER RecreateAtTier;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
+
+typedef
+enum D3D12_EXECUTE_INDIRECT_TIER
+ {
+ D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
+ D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
+ } D3D12_EXECUTE_INDIRECT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
+ {
+ _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
+ _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
+ _Out_ BOOL SampleCmpGradientAndBiasSupported;
+ _Out_ BOOL ExtendedCommandInfoSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
+
+typedef
+enum D3D12_TIGHT_ALIGNMENT_TIER
+ {
+ D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
+ D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
+ } D3D12_TIGHT_ALIGNMENT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
+ {
+ _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
+ } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
+
+typedef struct D3D12_FEATURE_DATA_PREDICATION
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_PREDICATION;
+
+typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_HARDWARE_COPY;
+
+typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
+
+typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
+
+typedef struct D3D12_RESOURCE_ALLOCATION_INFO
+ {
+ UINT64 SizeInBytes;
+ UINT64 Alignment;
+ } D3D12_RESOURCE_ALLOCATION_INFO;
+
+typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
+ {
+ UINT64 Offset;
+ UINT64 Alignment;
+ UINT64 SizeInBytes;
+ } D3D12_RESOURCE_ALLOCATION_INFO1;
+
+typedef
+enum D3D12_HEAP_TYPE
+ {
+ D3D12_HEAP_TYPE_DEFAULT = 1,
+ D3D12_HEAP_TYPE_UPLOAD = 2,
+ D3D12_HEAP_TYPE_READBACK = 3,
+ D3D12_HEAP_TYPE_CUSTOM = 4,
+ D3D12_HEAP_TYPE_GPU_UPLOAD = 5
+ } D3D12_HEAP_TYPE;
+
+typedef
+enum D3D12_CPU_PAGE_PROPERTY
+ {
+ D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
+ D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
+ D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
+ D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
+ } D3D12_CPU_PAGE_PROPERTY;
+
+typedef
+enum D3D12_MEMORY_POOL
+ {
+ D3D12_MEMORY_POOL_UNKNOWN = 0,
+ D3D12_MEMORY_POOL_L0 = 1,
+ D3D12_MEMORY_POOL_L1 = 2
+ } D3D12_MEMORY_POOL;
+
+typedef struct D3D12_HEAP_PROPERTIES
+ {
+ D3D12_HEAP_TYPE Type;
+ D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
+ D3D12_MEMORY_POOL MemoryPoolPreference;
+ UINT CreationNodeMask;
+ UINT VisibleNodeMask;
+ } D3D12_HEAP_PROPERTIES;
+
+typedef
+enum D3D12_HEAP_FLAGS
+ {
+ D3D12_HEAP_FLAG_NONE = 0,
+ D3D12_HEAP_FLAG_SHARED = 0x1,
+ D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
+ D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
+ D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
+ D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
+ D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
+ D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
+ D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
+ D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
+ D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
+ D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
+ D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
+ D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
+ } D3D12_HEAP_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
+typedef struct D3D12_HEAP_DESC
+ {
+ UINT64 SizeInBytes;
+ D3D12_HEAP_PROPERTIES Properties;
+ UINT64 Alignment;
+ D3D12_HEAP_FLAGS Flags;
+ } D3D12_HEAP_DESC;
+
+typedef
+enum D3D12_RESOURCE_DIMENSION
+ {
+ D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
+ D3D12_RESOURCE_DIMENSION_BUFFER = 1,
+ D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
+ D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
+ D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
+ } D3D12_RESOURCE_DIMENSION;
+
+typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
+ {
+ _In_ DXGI_FORMAT Format;
+ _In_ D3D12_RESOURCE_DIMENSION Dimension;
+ _In_ D3D12_HEAP_PROPERTIES DestHeapProperties;
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
+
+typedef
+enum D3D12_TEXTURE_LAYOUT
+ {
+ D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
+ D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
+ D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
+ D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
+ } D3D12_TEXTURE_LAYOUT;
+
+typedef
+enum D3D12_RESOURCE_FLAGS
+ {
+ D3D12_RESOURCE_FLAG_NONE = 0,
+ D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
+ D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
+ D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
+ D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
+ D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
+ D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
+ D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
+ D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
+ D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
+ D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
+ } D3D12_RESOURCE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
+typedef struct D3D12_MIP_REGION
+ {
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ } D3D12_MIP_REGION;
+
+typedef struct D3D12_RESOURCE_DESC
+ {
+ D3D12_RESOURCE_DIMENSION Dimension;
+ UINT64 Alignment;
+ UINT64 Width;
+ UINT Height;
+ UINT16 DepthOrArraySize;
+ UINT16 MipLevels;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D12_TEXTURE_LAYOUT Layout;
+ D3D12_RESOURCE_FLAGS Flags;
+ } D3D12_RESOURCE_DESC;
+
+typedef struct D3D12_RESOURCE_DESC1
+ {
+ D3D12_RESOURCE_DIMENSION Dimension;
+ UINT64 Alignment;
+ UINT64 Width;
+ UINT Height;
+ UINT16 DepthOrArraySize;
+ UINT16 MipLevels;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D12_TEXTURE_LAYOUT Layout;
+ D3D12_RESOURCE_FLAGS Flags;
+ D3D12_MIP_REGION SamplerFeedbackMipRegion;
+ } D3D12_RESOURCE_DESC1;
+
+typedef struct D3D12_DEPTH_STENCIL_VALUE
+ {
+ FLOAT Depth;
+ UINT8 Stencil;
+ } D3D12_DEPTH_STENCIL_VALUE;
+
+typedef struct D3D12_CLEAR_VALUE
+ {
+ DXGI_FORMAT Format;
+ union
+ {
+ FLOAT Color[ 4 ];
+ D3D12_DEPTH_STENCIL_VALUE DepthStencil;
+ } ;
+ } D3D12_CLEAR_VALUE;
+
+typedef struct D3D12_RANGE
+ {
+ SIZE_T Begin;
+ SIZE_T End;
+ } D3D12_RANGE;
+
+typedef struct D3D12_RANGE_UINT64
+ {
+ UINT64 Begin;
+ UINT64 End;
+ } D3D12_RANGE_UINT64;
+
+typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
+ {
+ UINT Subresource;
+ D3D12_RANGE_UINT64 Range;
+ } D3D12_SUBRESOURCE_RANGE_UINT64;
+
+typedef struct D3D12_SUBRESOURCE_INFO
+ {
+ UINT64 Offset;
+ UINT RowPitch;
+ UINT DepthPitch;
+ } D3D12_SUBRESOURCE_INFO;
+
+typedef struct D3D12_TILED_RESOURCE_COORDINATE
+ {
+ UINT X;
+ UINT Y;
+ UINT Z;
+ UINT Subresource;
+ } D3D12_TILED_RESOURCE_COORDINATE;
+
+typedef struct D3D12_TILE_REGION_SIZE
+ {
+ UINT NumTiles;
+ BOOL UseBox;
+ UINT Width;
+ UINT16 Height;
+ UINT16 Depth;
+ } D3D12_TILE_REGION_SIZE;
+
+typedef
+enum D3D12_TILE_RANGE_FLAGS
+ {
+ D3D12_TILE_RANGE_FLAG_NONE = 0,
+ D3D12_TILE_RANGE_FLAG_NULL = 1,
+ D3D12_TILE_RANGE_FLAG_SKIP = 2,
+ D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
+ } D3D12_TILE_RANGE_FLAGS;
+
+typedef struct D3D12_SUBRESOURCE_TILING
+ {
+ UINT WidthInTiles;
+ UINT16 HeightInTiles;
+ UINT16 DepthInTiles;
+ UINT StartTileIndexInOverallResource;
+ } D3D12_SUBRESOURCE_TILING;
+
+typedef struct D3D12_TILE_SHAPE
+ {
+ UINT WidthInTexels;
+ UINT HeightInTexels;
+ UINT DepthInTexels;
+ } D3D12_TILE_SHAPE;
+
+typedef struct D3D12_PACKED_MIP_INFO
+ {
+ UINT8 NumStandardMips;
+ UINT8 NumPackedMips;
+ UINT NumTilesForPackedMips;
+ UINT StartTileIndexInOverallResource;
+ } D3D12_PACKED_MIP_INFO;
+
+typedef
+enum D3D12_TILE_MAPPING_FLAGS
+ {
+ D3D12_TILE_MAPPING_FLAG_NONE = 0,
+ D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
+ } D3D12_TILE_MAPPING_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
+typedef
+enum D3D12_TILE_COPY_FLAGS
+ {
+ D3D12_TILE_COPY_FLAG_NONE = 0,
+ D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
+ D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
+ D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
+ } D3D12_TILE_COPY_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
+typedef
+enum D3D12_RESOURCE_STATES
+ {
+ D3D12_RESOURCE_STATE_COMMON = 0,
+ D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
+ D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
+ D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
+ D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
+ D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
+ D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
+ D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
+ D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
+ D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
+ D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
+ D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
+ D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
+ D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
+ D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
+ D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
+ D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
+ D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
+ D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
+ D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
+ D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
+ D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
+ D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
+ D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
+ D3D12_RESOURCE_STATE_PRESENT = 0,
+ D3D12_RESOURCE_STATE_PREDICATION = 0x200,
+ D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
+ D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
+ D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
+ D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
+ D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
+ D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
+ } D3D12_RESOURCE_STATES;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
+typedef
+enum D3D12_RESOURCE_BARRIER_TYPE
+ {
+ D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
+ D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
+ D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
+ } D3D12_RESOURCE_BARRIER_TYPE;
+
+
+typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
+ {
+ ID3D12Resource *pResource;
+ UINT Subresource;
+ D3D12_RESOURCE_STATES StateBefore;
+ D3D12_RESOURCE_STATES StateAfter;
+ } D3D12_RESOURCE_TRANSITION_BARRIER;
+
+typedef struct D3D12_RESOURCE_ALIASING_BARRIER
+ {
+ ID3D12Resource *pResourceBefore;
+ ID3D12Resource *pResourceAfter;
+ } D3D12_RESOURCE_ALIASING_BARRIER;
+
+typedef struct D3D12_RESOURCE_UAV_BARRIER
+ {
+ ID3D12Resource *pResource;
+ } D3D12_RESOURCE_UAV_BARRIER;
+
+typedef
+enum D3D12_RESOURCE_BARRIER_FLAGS
+ {
+ D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
+ D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
+ D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
+ } D3D12_RESOURCE_BARRIER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
+typedef struct D3D12_RESOURCE_BARRIER
+ {
+ D3D12_RESOURCE_BARRIER_TYPE Type;
+ D3D12_RESOURCE_BARRIER_FLAGS Flags;
+ union
+ {
+ D3D12_RESOURCE_TRANSITION_BARRIER Transition;
+ D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
+ D3D12_RESOURCE_UAV_BARRIER UAV;
+ } ;
+ } D3D12_RESOURCE_BARRIER;
+
+typedef struct D3D12_SUBRESOURCE_FOOTPRINT
+ {
+ DXGI_FORMAT Format;
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ UINT RowPitch;
+ } D3D12_SUBRESOURCE_FOOTPRINT;
+
+typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
+ {
+ UINT64 Offset;
+ D3D12_SUBRESOURCE_FOOTPRINT Footprint;
+ } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
+
+typedef
+enum D3D12_TEXTURE_COPY_TYPE
+ {
+ D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
+ D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
+ } D3D12_TEXTURE_COPY_TYPE;
+
+typedef struct D3D12_TEXTURE_COPY_LOCATION
+ {
+ ID3D12Resource *pResource;
+ D3D12_TEXTURE_COPY_TYPE Type;
+ union
+ {
+ D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
+ UINT SubresourceIndex;
+ } ;
+ } D3D12_TEXTURE_COPY_LOCATION;
+
+typedef
+enum D3D12_RESOLVE_MODE
+ {
+ D3D12_RESOLVE_MODE_DECOMPRESS = 0,
+ D3D12_RESOLVE_MODE_MIN = 1,
+ D3D12_RESOLVE_MODE_MAX = 2,
+ D3D12_RESOLVE_MODE_AVERAGE = 3,
+ D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
+ D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
+ } D3D12_RESOLVE_MODE;
+
+typedef struct D3D12_SAMPLE_POSITION
+ {
+ INT8 X;
+ INT8 Y;
+ } D3D12_SAMPLE_POSITION;
+
+typedef struct D3D12_VIEW_INSTANCE_LOCATION
+ {
+ UINT ViewportArrayIndex;
+ UINT RenderTargetArrayIndex;
+ } D3D12_VIEW_INSTANCE_LOCATION;
+
+typedef
+enum D3D12_VIEW_INSTANCING_FLAGS
+ {
+ D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
+ D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
+ } D3D12_VIEW_INSTANCING_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
+typedef struct D3D12_VIEW_INSTANCING_DESC
+ {
+ UINT ViewInstanceCount;
+ _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
+ D3D12_VIEW_INSTANCING_FLAGS Flags;
+ } D3D12_VIEW_INSTANCING_DESC;
+
+typedef
+enum D3D12_SHADER_COMPONENT_MAPPING
+ {
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
+ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
+ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
+ } D3D12_SHADER_COMPONENT_MAPPING;
+
+#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
+#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
+#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
+#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
+ (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
+#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
+typedef
+enum D3D12_BUFFER_SRV_FLAGS
+ {
+ D3D12_BUFFER_SRV_FLAG_NONE = 0,
+ D3D12_BUFFER_SRV_FLAG_RAW = 0x1
+ } D3D12_BUFFER_SRV_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
+typedef struct D3D12_BUFFER_SRV
+ {
+ UINT64 FirstElement;
+ UINT NumElements;
+ UINT StructureByteStride;
+ D3D12_BUFFER_SRV_FLAGS Flags;
+ } D3D12_BUFFER_SRV;
+
+typedef struct D3D12_TEX1D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEX1D_SRV;
+
+typedef struct D3D12_TEX1D_ARRAY_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEX1D_ARRAY_SRV;
+
+typedef struct D3D12_TEX2D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT PlaneSlice;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEX2D_SRV;
+
+typedef struct D3D12_TEX2D_ARRAY_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ UINT PlaneSlice;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEX2D_ARRAY_SRV;
+
+typedef struct D3D12_TEX3D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEX3D_SRV;
+
+typedef struct D3D12_TEXCUBE_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEXCUBE_SRV;
+
+typedef struct D3D12_TEXCUBE_ARRAY_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT First2DArrayFace;
+ UINT NumCubes;
+ FLOAT ResourceMinLODClamp;
+ } D3D12_TEXCUBE_ARRAY_SRV;
+
+typedef struct D3D12_TEX2DMS_SRV
+ {
+ UINT UnusedField_NothingToDefine;
+ } D3D12_TEX2DMS_SRV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_SRV
+ {
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX2DMS_ARRAY_SRV;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS Location;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
+
+typedef
+enum D3D12_SRV_DIMENSION
+ {
+ D3D12_SRV_DIMENSION_UNKNOWN = 0,
+ D3D12_SRV_DIMENSION_BUFFER = 1,
+ D3D12_SRV_DIMENSION_TEXTURE1D = 2,
+ D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_SRV_DIMENSION_TEXTURE2D = 4,
+ D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
+ D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D12_SRV_DIMENSION_TEXTURE3D = 8,
+ D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
+ D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+ D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
+ } D3D12_SRV_DIMENSION;
+
+typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D12_SRV_DIMENSION ViewDimension;
+ UINT Shader4ComponentMapping;
+ union
+ {
+ D3D12_BUFFER_SRV Buffer;
+ D3D12_TEX1D_SRV Texture1D;
+ D3D12_TEX1D_ARRAY_SRV Texture1DArray;
+ D3D12_TEX2D_SRV Texture2D;
+ D3D12_TEX2D_ARRAY_SRV Texture2DArray;
+ D3D12_TEX2DMS_SRV Texture2DMS;
+ D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
+ D3D12_TEX3D_SRV Texture3D;
+ D3D12_TEXCUBE_SRV TextureCube;
+ D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
+ } ;
+ } D3D12_SHADER_RESOURCE_VIEW_DESC;
+
+typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+ UINT SizeInBytes;
+ } D3D12_CONSTANT_BUFFER_VIEW_DESC;
+
+typedef
+enum D3D12_FILTER
+ {
+ D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
+ D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
+ D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
+ D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
+ D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
+ D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
+ D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
+ D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
+ D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x54,
+ D3D12_FILTER_ANISOTROPIC = 0x55,
+ D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
+ D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
+ D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
+ D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
+ D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
+ D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
+ D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
+ D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
+ D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0xd4,
+ D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
+ D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
+ D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
+ D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
+ D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
+ D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
+ D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
+ D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
+ D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
+ D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x154,
+ D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
+ D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
+ D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
+ D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
+ D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x1d4,
+ D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
+ } D3D12_FILTER;
+
+typedef
+enum D3D12_FILTER_TYPE
+ {
+ D3D12_FILTER_TYPE_POINT = 0,
+ D3D12_FILTER_TYPE_LINEAR = 1
+ } D3D12_FILTER_TYPE;
+
+typedef
+enum D3D12_FILTER_REDUCTION_TYPE
+ {
+ D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
+ D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
+ D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
+ D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
+ } D3D12_FILTER_REDUCTION_TYPE;
+
+#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
+
+#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
+
+#define D3D12_FILTER_TYPE_MASK ( 0x3 )
+
+#define D3D12_MIN_FILTER_SHIFT ( 4 )
+
+#define D3D12_MAG_FILTER_SHIFT ( 2 )
+
+#define D3D12_MIP_FILTER_SHIFT ( 0 )
+
+#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
+
+#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
+ ( ( D3D12_FILTER ) ( \
+ ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
+ ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
+ ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
+ ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
+#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
+ ( ( D3D12_FILTER ) ( \
+ D3D12_ANISOTROPIC_FILTERING_BIT | \
+ D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
+ D3D12_FILTER_TYPE_LINEAR, \
+ D3D12_FILTER_TYPE_LINEAR, \
+ reduction ) ) )
+#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \
+ ( ( D3D12_FILTER ) ( \
+ D3D12_ANISOTROPIC_FILTERING_BIT | \
+ D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
+ D3D12_FILTER_TYPE_LINEAR, \
+ D3D12_FILTER_TYPE_POINT, \
+ reduction ) ) )
+#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
+ ( ( D3D12_FILTER_TYPE ) \
+ ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
+#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
+ ( ( D3D12_FILTER_TYPE ) \
+ ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
+#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
+ ( ( D3D12_FILTER_TYPE ) \
+ ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
+#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
+ ( ( D3D12_FILTER_REDUCTION_TYPE ) \
+ ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
+#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
+ ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
+#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
+ ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
+ ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
+ ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )
+typedef
+enum D3D12_TEXTURE_ADDRESS_MODE
+ {
+ D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
+ D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
+ D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
+ D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
+ D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
+ } D3D12_TEXTURE_ADDRESS_MODE;
+
+typedef struct D3D12_SAMPLER_DESC
+ {
+ D3D12_FILTER Filter;
+ D3D12_TEXTURE_ADDRESS_MODE AddressU;
+ D3D12_TEXTURE_ADDRESS_MODE AddressV;
+ D3D12_TEXTURE_ADDRESS_MODE AddressW;
+ FLOAT MipLODBias;
+ UINT MaxAnisotropy;
+ D3D12_COMPARISON_FUNC ComparisonFunc;
+ FLOAT BorderColor[ 4 ];
+ FLOAT MinLOD;
+ FLOAT MaxLOD;
+ } D3D12_SAMPLER_DESC;
+
+typedef
+enum D3D12_SAMPLER_FLAGS
+ {
+ D3D12_SAMPLER_FLAG_NONE = 0,
+ D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x1,
+ D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
+ } D3D12_SAMPLER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
+typedef struct D3D12_SAMPLER_DESC2
+ {
+ D3D12_FILTER Filter;
+ D3D12_TEXTURE_ADDRESS_MODE AddressU;
+ D3D12_TEXTURE_ADDRESS_MODE AddressV;
+ D3D12_TEXTURE_ADDRESS_MODE AddressW;
+ FLOAT MipLODBias;
+ UINT MaxAnisotropy;
+ D3D12_COMPARISON_FUNC ComparisonFunc;
+ union
+ {
+ FLOAT FloatBorderColor[ 4 ];
+ UINT UintBorderColor[ 4 ];
+ } ;
+ FLOAT MinLOD;
+ FLOAT MaxLOD;
+ D3D12_SAMPLER_FLAGS Flags;
+ } D3D12_SAMPLER_DESC2;
+
+typedef
+enum D3D12_BUFFER_UAV_FLAGS
+ {
+ D3D12_BUFFER_UAV_FLAG_NONE = 0,
+ D3D12_BUFFER_UAV_FLAG_RAW = 0x1
+ } D3D12_BUFFER_UAV_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
+typedef struct D3D12_BUFFER_UAV
+ {
+ UINT64 FirstElement;
+ UINT NumElements;
+ UINT StructureByteStride;
+ UINT64 CounterOffsetInBytes;
+ D3D12_BUFFER_UAV_FLAGS Flags;
+ } D3D12_BUFFER_UAV;
+
+typedef struct D3D12_TEX1D_UAV
+ {
+ UINT MipSlice;
+ } D3D12_TEX1D_UAV;
+
+typedef struct D3D12_TEX1D_ARRAY_UAV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX1D_ARRAY_UAV;
+
+typedef struct D3D12_TEX2D_UAV
+ {
+ UINT MipSlice;
+ UINT PlaneSlice;
+ } D3D12_TEX2D_UAV;
+
+typedef struct D3D12_TEX2D_ARRAY_UAV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ UINT PlaneSlice;
+ } D3D12_TEX2D_ARRAY_UAV;
+
+typedef struct D3D12_TEX2DMS_UAV
+ {
+ UINT UnusedField_NothingToDefine;
+ } D3D12_TEX2DMS_UAV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_UAV
+ {
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX2DMS_ARRAY_UAV;
+
+typedef struct D3D12_TEX3D_UAV
+ {
+ UINT MipSlice;
+ UINT FirstWSlice;
+ UINT WSize;
+ } D3D12_TEX3D_UAV;
+
+typedef
+enum D3D12_UAV_DIMENSION
+ {
+ D3D12_UAV_DIMENSION_UNKNOWN = 0,
+ D3D12_UAV_DIMENSION_BUFFER = 1,
+ D3D12_UAV_DIMENSION_TEXTURE1D = 2,
+ D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_UAV_DIMENSION_TEXTURE2D = 4,
+ D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
+ D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D12_UAV_DIMENSION_TEXTURE3D = 8
+ } D3D12_UAV_DIMENSION;
+
+typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D12_UAV_DIMENSION ViewDimension;
+ union
+ {
+ D3D12_BUFFER_UAV Buffer;
+ D3D12_TEX1D_UAV Texture1D;
+ D3D12_TEX1D_ARRAY_UAV Texture1DArray;
+ D3D12_TEX2D_UAV Texture2D;
+ D3D12_TEX2D_ARRAY_UAV Texture2DArray;
+ D3D12_TEX2DMS_UAV Texture2DMS;
+ D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
+ D3D12_TEX3D_UAV Texture3D;
+ } ;
+ } D3D12_UNORDERED_ACCESS_VIEW_DESC;
+
+typedef struct D3D12_BUFFER_RTV
+ {
+ UINT64 FirstElement;
+ UINT NumElements;
+ } D3D12_BUFFER_RTV;
+
+typedef struct D3D12_TEX1D_RTV
+ {
+ UINT MipSlice;
+ } D3D12_TEX1D_RTV;
+
+typedef struct D3D12_TEX1D_ARRAY_RTV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX1D_ARRAY_RTV;
+
+typedef struct D3D12_TEX2D_RTV
+ {
+ UINT MipSlice;
+ UINT PlaneSlice;
+ } D3D12_TEX2D_RTV;
+
+typedef struct D3D12_TEX2DMS_RTV
+ {
+ UINT UnusedField_NothingToDefine;
+ } D3D12_TEX2DMS_RTV;
+
+typedef struct D3D12_TEX2D_ARRAY_RTV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ UINT PlaneSlice;
+ } D3D12_TEX2D_ARRAY_RTV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_RTV
+ {
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX2DMS_ARRAY_RTV;
+
+typedef struct D3D12_TEX3D_RTV
+ {
+ UINT MipSlice;
+ UINT FirstWSlice;
+ UINT WSize;
+ } D3D12_TEX3D_RTV;
+
+typedef
+enum D3D12_RTV_DIMENSION
+ {
+ D3D12_RTV_DIMENSION_UNKNOWN = 0,
+ D3D12_RTV_DIMENSION_BUFFER = 1,
+ D3D12_RTV_DIMENSION_TEXTURE1D = 2,
+ D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_RTV_DIMENSION_TEXTURE2D = 4,
+ D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
+ D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D12_RTV_DIMENSION_TEXTURE3D = 8
+ } D3D12_RTV_DIMENSION;
+
+typedef struct D3D12_RENDER_TARGET_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D12_RTV_DIMENSION ViewDimension;
+ union
+ {
+ D3D12_BUFFER_RTV Buffer;
+ D3D12_TEX1D_RTV Texture1D;
+ D3D12_TEX1D_ARRAY_RTV Texture1DArray;
+ D3D12_TEX2D_RTV Texture2D;
+ D3D12_TEX2D_ARRAY_RTV Texture2DArray;
+ D3D12_TEX2DMS_RTV Texture2DMS;
+ D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
+ D3D12_TEX3D_RTV Texture3D;
+ } ;
+ } D3D12_RENDER_TARGET_VIEW_DESC;
+
+typedef struct D3D12_TEX1D_DSV
+ {
+ UINT MipSlice;
+ } D3D12_TEX1D_DSV;
+
+typedef struct D3D12_TEX1D_ARRAY_DSV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX1D_ARRAY_DSV;
+
+typedef struct D3D12_TEX2D_DSV
+ {
+ UINT MipSlice;
+ } D3D12_TEX2D_DSV;
+
+typedef struct D3D12_TEX2D_ARRAY_DSV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX2D_ARRAY_DSV;
+
+typedef struct D3D12_TEX2DMS_DSV
+ {
+ UINT UnusedField_NothingToDefine;
+ } D3D12_TEX2DMS_DSV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_DSV
+ {
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D12_TEX2DMS_ARRAY_DSV;
+
+typedef
+enum D3D12_DSV_FLAGS
+ {
+ D3D12_DSV_FLAG_NONE = 0,
+ D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
+ D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
+ } D3D12_DSV_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
+typedef
+enum D3D12_DSV_DIMENSION
+ {
+ D3D12_DSV_DIMENSION_UNKNOWN = 0,
+ D3D12_DSV_DIMENSION_TEXTURE1D = 1,
+ D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
+ D3D12_DSV_DIMENSION_TEXTURE2D = 3,
+ D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
+ D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
+ D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
+ } D3D12_DSV_DIMENSION;
+
+typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D12_DSV_DIMENSION ViewDimension;
+ D3D12_DSV_FLAGS Flags;
+ union
+ {
+ D3D12_TEX1D_DSV Texture1D;
+ D3D12_TEX1D_ARRAY_DSV Texture1DArray;
+ D3D12_TEX2D_DSV Texture2D;
+ D3D12_TEX2D_ARRAY_DSV Texture2DArray;
+ D3D12_TEX2DMS_DSV Texture2DMS;
+ D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
+ } ;
+ } D3D12_DEPTH_STENCIL_VIEW_DESC;
+
+typedef
+enum D3D12_CLEAR_FLAGS
+ {
+ D3D12_CLEAR_FLAG_DEPTH = 0x1,
+ D3D12_CLEAR_FLAG_STENCIL = 0x2
+ } D3D12_CLEAR_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
+typedef
+enum D3D12_FENCE_FLAGS
+ {
+ D3D12_FENCE_FLAG_NONE = 0,
+ D3D12_FENCE_FLAG_SHARED = 0x1,
+ D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
+ D3D12_FENCE_FLAG_NON_MONITORED = 0x4
+ } D3D12_FENCE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
+typedef
+enum D3D12_DESCRIPTOR_HEAP_TYPE
+ {
+ D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
+ D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
+ D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
+ D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
+ D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
+ } D3D12_DESCRIPTOR_HEAP_TYPE;
+
+typedef
+enum D3D12_DESCRIPTOR_HEAP_FLAGS
+ {
+ D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
+ D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
+ } D3D12_DESCRIPTOR_HEAP_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
+typedef struct D3D12_DESCRIPTOR_HEAP_DESC
+ {
+ D3D12_DESCRIPTOR_HEAP_TYPE Type;
+ UINT NumDescriptors;
+ D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
+ UINT NodeMask;
+ } D3D12_DESCRIPTOR_HEAP_DESC;
+
+typedef
+enum D3D12_DESCRIPTOR_RANGE_TYPE
+ {
+ D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
+ D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
+ D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
+ D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
+ } D3D12_DESCRIPTOR_RANGE_TYPE;
+
+typedef struct D3D12_DESCRIPTOR_RANGE
+ {
+ D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
+ UINT NumDescriptors;
+ UINT BaseShaderRegister;
+ UINT RegisterSpace;
+ UINT OffsetInDescriptorsFromTableStart;
+ } D3D12_DESCRIPTOR_RANGE;
+
+typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
+ {
+ UINT NumDescriptorRanges;
+ _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
+ } D3D12_ROOT_DESCRIPTOR_TABLE;
+
+typedef struct D3D12_ROOT_CONSTANTS
+ {
+ UINT ShaderRegister;
+ UINT RegisterSpace;
+ UINT Num32BitValues;
+ } D3D12_ROOT_CONSTANTS;
+
+typedef struct D3D12_ROOT_DESCRIPTOR
+ {
+ UINT ShaderRegister;
+ UINT RegisterSpace;
+ } D3D12_ROOT_DESCRIPTOR;
+
+typedef
+enum D3D12_SHADER_VISIBILITY
+ {
+ D3D12_SHADER_VISIBILITY_ALL = 0,
+ D3D12_SHADER_VISIBILITY_VERTEX = 1,
+ D3D12_SHADER_VISIBILITY_HULL = 2,
+ D3D12_SHADER_VISIBILITY_DOMAIN = 3,
+ D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
+ D3D12_SHADER_VISIBILITY_PIXEL = 5,
+ D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
+ D3D12_SHADER_VISIBILITY_MESH = 7
+ } D3D12_SHADER_VISIBILITY;
+
+typedef
+enum D3D12_ROOT_PARAMETER_TYPE
+ {
+ D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
+ D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
+ D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
+ D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
+ D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
+ } D3D12_ROOT_PARAMETER_TYPE;
+
+typedef struct D3D12_ROOT_PARAMETER
+ {
+ D3D12_ROOT_PARAMETER_TYPE ParameterType;
+ union
+ {
+ D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
+ D3D12_ROOT_CONSTANTS Constants;
+ D3D12_ROOT_DESCRIPTOR Descriptor;
+ } ;
+ D3D12_SHADER_VISIBILITY ShaderVisibility;
+ } D3D12_ROOT_PARAMETER;
+
+typedef
+enum D3D12_ROOT_SIGNATURE_FLAGS
+ {
+ D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
+ D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
+ D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
+ D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
+ D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
+ D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
+ } D3D12_ROOT_SIGNATURE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
+typedef
+enum D3D12_STATIC_BORDER_COLOR
+ {
+ D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) ,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE + 1 ) ,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT + 1 )
+ } D3D12_STATIC_BORDER_COLOR;
+
+typedef struct D3D12_STATIC_SAMPLER_DESC
+ {
+ D3D12_FILTER Filter;
+ D3D12_TEXTURE_ADDRESS_MODE AddressU;
+ D3D12_TEXTURE_ADDRESS_MODE AddressV;
+ D3D12_TEXTURE_ADDRESS_MODE AddressW;
+ FLOAT MipLODBias;
+ UINT MaxAnisotropy;
+ D3D12_COMPARISON_FUNC ComparisonFunc;
+ D3D12_STATIC_BORDER_COLOR BorderColor;
+ FLOAT MinLOD;
+ FLOAT MaxLOD;
+ UINT ShaderRegister;
+ UINT RegisterSpace;
+ D3D12_SHADER_VISIBILITY ShaderVisibility;
+ } D3D12_STATIC_SAMPLER_DESC;
+
+typedef struct D3D12_STATIC_SAMPLER_DESC1
+ {
+ D3D12_FILTER Filter;
+ D3D12_TEXTURE_ADDRESS_MODE AddressU;
+ D3D12_TEXTURE_ADDRESS_MODE AddressV;
+ D3D12_TEXTURE_ADDRESS_MODE AddressW;
+ FLOAT MipLODBias;
+ UINT MaxAnisotropy;
+ D3D12_COMPARISON_FUNC ComparisonFunc;
+ D3D12_STATIC_BORDER_COLOR BorderColor;
+ FLOAT MinLOD;
+ FLOAT MaxLOD;
+ UINT ShaderRegister;
+ UINT RegisterSpace;
+ D3D12_SHADER_VISIBILITY ShaderVisibility;
+ D3D12_SAMPLER_FLAGS Flags;
+ } D3D12_STATIC_SAMPLER_DESC1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC
+ {
+ UINT NumParameters;
+ _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
+ UINT NumStaticSamplers;
+ _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
+ D3D12_ROOT_SIGNATURE_FLAGS Flags;
+ } D3D12_ROOT_SIGNATURE_DESC;
+
+typedef
+enum D3D12_DESCRIPTOR_RANGE_FLAGS
+ {
+ D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
+ D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
+ D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
+ D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+ D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
+ D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
+ } D3D12_DESCRIPTOR_RANGE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
+typedef struct D3D12_DESCRIPTOR_RANGE1
+ {
+ D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
+ UINT NumDescriptors;
+ UINT BaseShaderRegister;
+ UINT RegisterSpace;
+ D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
+ UINT OffsetInDescriptorsFromTableStart;
+ } D3D12_DESCRIPTOR_RANGE1;
+
+typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
+ {
+ UINT NumDescriptorRanges;
+ _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
+ } D3D12_ROOT_DESCRIPTOR_TABLE1;
+
+typedef
+enum D3D12_ROOT_DESCRIPTOR_FLAGS
+ {
+ D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
+ D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+ D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
+ } D3D12_ROOT_DESCRIPTOR_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
+typedef struct D3D12_ROOT_DESCRIPTOR1
+ {
+ UINT ShaderRegister;
+ UINT RegisterSpace;
+ D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
+ } D3D12_ROOT_DESCRIPTOR1;
+
+typedef struct D3D12_ROOT_PARAMETER1
+ {
+ D3D12_ROOT_PARAMETER_TYPE ParameterType;
+ union
+ {
+ D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
+ D3D12_ROOT_CONSTANTS Constants;
+ D3D12_ROOT_DESCRIPTOR1 Descriptor;
+ } ;
+ D3D12_SHADER_VISIBILITY ShaderVisibility;
+ } D3D12_ROOT_PARAMETER1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC1
+ {
+ UINT NumParameters;
+ _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
+ UINT NumStaticSamplers;
+ _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
+ D3D12_ROOT_SIGNATURE_FLAGS Flags;
+ } D3D12_ROOT_SIGNATURE_DESC1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC2
+ {
+ UINT NumParameters;
+ _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
+ UINT NumStaticSamplers;
+ _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1 *pStaticSamplers;
+ D3D12_ROOT_SIGNATURE_FLAGS Flags;
+ } D3D12_ROOT_SIGNATURE_DESC2;
+
+typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
+ {
+ D3D_ROOT_SIGNATURE_VERSION Version;
+ union
+ {
+ D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
+ D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
+ D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
+ } ;
+ } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
+#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
+
+/* interface ID3D12RootSignatureDeserializer */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
+ ID3D12RootSignatureDeserializer : public IUnknown
+ {
+ public:
+ virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12RootSignatureDeserializerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12RootSignatureDeserializer * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12RootSignatureDeserializer * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12RootSignatureDeserializer * This);
+
+ DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
+ const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
+ ID3D12RootSignatureDeserializer * This);
+
+ END_INTERFACE
+ } ID3D12RootSignatureDeserializerVtbl;
+
+ interface ID3D12RootSignatureDeserializer
+ {
+ CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12RootSignatureDeserializer_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12RootSignatureDeserializer_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
+ ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
+#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
+
+/* interface ID3D12VersionedRootSignatureDeserializer */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
+ ID3D12VersionedRootSignatureDeserializer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
+ D3D_ROOT_SIGNATURE_VERSION convertToVersion,
+ _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
+
+ virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VersionedRootSignatureDeserializer * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VersionedRootSignatureDeserializer * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VersionedRootSignatureDeserializer * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
+ HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
+ ID3D12VersionedRootSignatureDeserializer * This,
+ D3D_ROOT_SIGNATURE_VERSION convertToVersion,
+ _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
+ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
+ ID3D12VersionedRootSignatureDeserializer * This);
+
+ END_INTERFACE
+ } ID3D12VersionedRootSignatureDeserializerVtbl;
+
+ interface ID3D12VersionedRootSignatureDeserializer
+ {
+ CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
+ ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
+
+#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
+ ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0003 */
+/* [local] */
+
+typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
+ _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
+ _In_ D3D_ROOT_SIGNATURE_VERSION Version,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+HRESULT WINAPI D3D12SerializeRootSignature(
+ _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
+ _In_ D3D_ROOT_SIGNATURE_VERSION Version,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+HRESULT WINAPI D3D12SerializeVersionedRootSignature(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ LPCWSTR RootSignatureSubobjectName,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_opt_ LPCWSTR RootSignatureSubobjectName,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
+ {
+ SIZE_T ptr;
+ } D3D12_CPU_DESCRIPTOR_HANDLE;
+
+typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
+ {
+ UINT64 ptr;
+ } D3D12_GPU_DESCRIPTOR_HANDLE;
+
+// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
+// must have 2D subresources with all specified subresources the same dimension.
+typedef struct D3D12_DISCARD_REGION
+ {
+ UINT NumRects;
+ _In_reads_(NumRects) const D3D12_RECT *pRects;
+ UINT FirstSubresource;
+ UINT NumSubresources;
+ } D3D12_DISCARD_REGION;
+
+typedef
+enum D3D12_QUERY_HEAP_TYPE
+ {
+ D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
+ D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
+ D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
+ D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
+ D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
+ D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
+ D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
+ } D3D12_QUERY_HEAP_TYPE;
+
+typedef struct D3D12_QUERY_HEAP_DESC
+ {
+ D3D12_QUERY_HEAP_TYPE Type;
+ UINT Count;
+ UINT NodeMask;
+ } D3D12_QUERY_HEAP_DESC;
+
+typedef
+enum D3D12_QUERY_TYPE
+ {
+ D3D12_QUERY_TYPE_OCCLUSION = 0,
+ D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
+ D3D12_QUERY_TYPE_TIMESTAMP = 2,
+ D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
+ D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
+ D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
+ } D3D12_QUERY_TYPE;
+
+typedef
+enum D3D12_PREDICATION_OP
+ {
+ D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
+ D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
+ } D3D12_PREDICATION_OP;
+
+typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
+ {
+ UINT64 IAVertices;
+ UINT64 IAPrimitives;
+ UINT64 VSInvocations;
+ UINT64 GSInvocations;
+ UINT64 GSPrimitives;
+ UINT64 CInvocations;
+ UINT64 CPrimitives;
+ UINT64 PSInvocations;
+ UINT64 HSInvocations;
+ UINT64 DSInvocations;
+ UINT64 CSInvocations;
+ } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
+
+typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
+ {
+ UINT64 IAVertices;
+ UINT64 IAPrimitives;
+ UINT64 VSInvocations;
+ UINT64 GSInvocations;
+ UINT64 GSPrimitives;
+ UINT64 CInvocations;
+ UINT64 CPrimitives;
+ UINT64 PSInvocations;
+ UINT64 HSInvocations;
+ UINT64 DSInvocations;
+ UINT64 CSInvocations;
+ UINT64 ASInvocations;
+ UINT64 MSInvocations;
+ UINT64 MSPrimitives;
+ } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
+
+typedef struct D3D12_QUERY_DATA_SO_STATISTICS
+ {
+ UINT64 NumPrimitivesWritten;
+ UINT64 PrimitivesStorageNeeded;
+ } D3D12_QUERY_DATA_SO_STATISTICS;
+
+typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+ UINT64 SizeInBytes;
+ D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
+ } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
+
+typedef struct D3D12_DRAW_ARGUMENTS
+ {
+ UINT VertexCountPerInstance;
+ UINT InstanceCount;
+ UINT StartVertexLocation;
+ UINT StartInstanceLocation;
+ } D3D12_DRAW_ARGUMENTS;
+
+typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
+ {
+ UINT IndexCountPerInstance;
+ UINT InstanceCount;
+ UINT StartIndexLocation;
+ INT BaseVertexLocation;
+ UINT StartInstanceLocation;
+ } D3D12_DRAW_INDEXED_ARGUMENTS;
+
+typedef struct D3D12_DISPATCH_ARGUMENTS
+ {
+ UINT ThreadGroupCountX;
+ UINT ThreadGroupCountY;
+ UINT ThreadGroupCountZ;
+ } D3D12_DISPATCH_ARGUMENTS;
+
+typedef struct D3D12_VERTEX_BUFFER_VIEW
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+ UINT SizeInBytes;
+ UINT StrideInBytes;
+ } D3D12_VERTEX_BUFFER_VIEW;
+
+typedef struct D3D12_INDEX_BUFFER_VIEW
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+ UINT SizeInBytes;
+ DXGI_FORMAT Format;
+ } D3D12_INDEX_BUFFER_VIEW;
+
+typedef
+enum D3D12_INDIRECT_ARGUMENT_TYPE
+ {
+ D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
+ } D3D12_INDIRECT_ARGUMENT_TYPE;
+
+typedef struct D3D12_INDIRECT_ARGUMENT_DESC
+ {
+ D3D12_INDIRECT_ARGUMENT_TYPE Type;
+ union
+ {
+ struct
+ {
+ UINT Slot;
+ } VertexBuffer;
+ struct
+ {
+ UINT RootParameterIndex;
+ UINT DestOffsetIn32BitValues;
+ UINT Num32BitValuesToSet;
+ } Constant;
+ struct
+ {
+ UINT RootParameterIndex;
+ } ConstantBufferView;
+ struct
+ {
+ UINT RootParameterIndex;
+ } ShaderResourceView;
+ struct
+ {
+ UINT RootParameterIndex;
+ } UnorderedAccessView;
+ struct
+ {
+ UINT RootParameterIndex;
+ UINT DestOffsetIn32BitValues;
+ } IncrementingConstant;
+ } ;
+ } D3D12_INDIRECT_ARGUMENT_DESC;
+
+typedef struct D3D12_COMMAND_SIGNATURE_DESC
+ {
+ UINT ByteStride;
+ UINT NumArgumentDescs;
+ _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
+ UINT NodeMask;
+ } D3D12_COMMAND_SIGNATURE_DESC;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
+#define __ID3D12Pageable_INTERFACE_DEFINED__
+
+/* interface ID3D12Pageable */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Pageable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
+ ID3D12Pageable : public ID3D12DeviceChild
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PageableVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Pageable * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Pageable * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Pageable * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Pageable * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Pageable * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Pageable * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Pageable * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Pageable * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12PageableVtbl;
+
+ interface ID3D12Pageable
+ {
+ CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Pageable_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Pageable_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Pageable_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Heap_INTERFACE_DEFINED__
+#define __ID3D12Heap_INTERFACE_DEFINED__
+
+/* interface ID3D12Heap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Heap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
+ ID3D12Heap : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_HEAP_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12HeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Heap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Heap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Heap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Heap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Heap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Heap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Heap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Heap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Heap * This);
+
+#else
+ D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Heap * This,
+ D3D12_HEAP_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12HeapVtbl;
+
+ interface ID3D12Heap
+ {
+ CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Heap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Heap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Heap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12Heap_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12Heap_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Resource_INTERFACE_DEFINED__
+#define __ID3D12Resource_INTERFACE_DEFINED__
+
+/* interface ID3D12Resource */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Resource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
+ ID3D12Resource : public ID3D12Pageable
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pReadRange,
+ _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap(
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_RESOURCE_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_RESOURCE_DESC * RetVal) = 0;
+#endif
+
+ virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
+ UINT DstSubresource,
+ _In_opt_ const D3D12_BOX *pDstBox,
+ _In_ const void *pSrcData,
+ UINT SrcRowPitch,
+ UINT SrcDepthPitch) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
+ _Out_ void *pDstData,
+ UINT DstRowPitch,
+ UINT DstDepthPitch,
+ UINT SrcSubresource,
+ _In_opt_ const D3D12_BOX *pSrcBox) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
+ _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
+ _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ResourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Resource * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Resource * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Resource * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Resource * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Resource * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Resource * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Resource * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Resource * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Map)
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D12Resource * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pReadRange,
+ _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D12Resource * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource * This);
+
+#else
+ D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource * This,
+ D3D12_RESOURCE_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
+ D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
+ ID3D12Resource * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
+ HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
+ ID3D12Resource * This,
+ UINT DstSubresource,
+ _In_opt_ const D3D12_BOX *pDstBox,
+ _In_ const void *pSrcData,
+ UINT SrcRowPitch,
+ UINT SrcDepthPitch);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
+ HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
+ ID3D12Resource * This,
+ _Out_ void *pDstData,
+ UINT DstRowPitch,
+ UINT DstDepthPitch,
+ UINT SrcSubresource,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
+ HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
+ ID3D12Resource * This,
+ _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
+ _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
+
+ END_INTERFACE
+ } ID3D12ResourceVtbl;
+
+ interface ID3D12Resource
+ {
+ CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Resource_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Resource_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Resource_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
+ ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
+
+#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
+#if !defined(_WIN32)
+
+#define ID3D12Resource_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12Resource_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12Resource_GetGPUVirtualAddress(This) \
+ ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
+
+#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
+
+#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
+ ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
+#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandAllocator */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandAllocator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
+ ID3D12CommandAllocator : public ID3D12Pageable
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandAllocatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandAllocator * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandAllocator * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandAllocator * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandAllocator * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandAllocator * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandAllocator * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandAllocator * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandAllocator * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12CommandAllocator * This);
+
+ END_INTERFACE
+ } ID3D12CommandAllocatorVtbl;
+
+ interface ID3D12CommandAllocator
+ {
+ CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandAllocator_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandAllocator_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandAllocator_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12CommandAllocator_Reset(This) \
+ ( (This)->lpVtbl -> Reset(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Fence_INTERFACE_DEFINED__
+#define __ID3D12Fence_INTERFACE_DEFINED__
+
+/* interface ID3D12Fence */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Fence;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
+ ID3D12Fence : public ID3D12Pageable
+ {
+ public:
+ virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
+ UINT64 Value,
+ HANDLE hEvent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Signal(
+ UINT64 Value) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12FenceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Fence * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Fence * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Fence * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Fence * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Fence * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Fence * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Fence * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Fence * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
+ UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
+ ID3D12Fence * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
+ ID3D12Fence * This,
+ UINT64 Value,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
+ HRESULT ( STDMETHODCALLTYPE *Signal )(
+ ID3D12Fence * This,
+ UINT64 Value);
+
+ END_INTERFACE
+ } ID3D12FenceVtbl;
+
+ interface ID3D12Fence
+ {
+ CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Fence_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Fence_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Fence_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12Fence_GetCompletedValue(This) \
+ ( (This)->lpVtbl -> GetCompletedValue(This) )
+
+#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
+
+#define ID3D12Fence_Signal(This,Value) \
+ ( (This)->lpVtbl -> Signal(This,Value) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
+#define __ID3D12Fence1_INTERFACE_DEFINED__
+
+/* interface ID3D12Fence1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Fence1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
+ ID3D12Fence1 : public ID3D12Fence
+ {
+ public:
+ virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Fence1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Fence1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Fence1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Fence1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Fence1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Fence1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Fence1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Fence1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Fence1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
+ UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
+ ID3D12Fence1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
+ ID3D12Fence1 * This,
+ UINT64 Value,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
+ HRESULT ( STDMETHODCALLTYPE *Signal )(
+ ID3D12Fence1 * This,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
+ D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
+ ID3D12Fence1 * This);
+
+ END_INTERFACE
+ } ID3D12Fence1Vtbl;
+
+ interface ID3D12Fence1
+ {
+ CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Fence1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Fence1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Fence1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12Fence1_GetCompletedValue(This) \
+ ( (This)->lpVtbl -> GetCompletedValue(This) )
+
+#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
+
+#define ID3D12Fence1_Signal(This,Value) \
+ ( (This)->lpVtbl -> Signal(This,Value) )
+
+
+#define ID3D12Fence1_GetCreationFlags(This) \
+ ( (This)->lpVtbl -> GetCreationFlags(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
+#define __ID3D12PipelineState_INTERFACE_DEFINED__
+
+/* interface ID3D12PipelineState */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PipelineState;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
+ ID3D12PipelineState : public ID3D12Pageable
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
+ _COM_Outptr_ ID3DBlob **ppBlob) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PipelineStateVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PipelineState * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PipelineState * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PipelineState * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12PipelineState * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12PipelineState * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12PipelineState * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12PipelineState * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12PipelineState * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
+ HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
+ ID3D12PipelineState * This,
+ _COM_Outptr_ ID3DBlob **ppBlob);
+
+ END_INTERFACE
+ } ID3D12PipelineStateVtbl;
+
+ interface ID3D12PipelineState
+ {
+ CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PipelineState_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PipelineState_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12PipelineState_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
+ ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
+#define __ID3D12PipelineState1_INTERFACE_DEFINED__
+
+/* interface ID3D12PipelineState1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PipelineState1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
+ ID3D12PipelineState1 : public ID3D12PipelineState
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PipelineState1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PipelineState1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PipelineState1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12PipelineState1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
+ HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
+ ID3D12PipelineState1 * This,
+ _COM_Outptr_ ID3DBlob **ppBlob);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12PipelineState1Vtbl;
+
+ interface ID3D12PipelineState1
+ {
+ CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PipelineState1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PipelineState1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12PipelineState1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
+ ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
+
+
+#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
+#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
+
+/* interface ID3D12DescriptorHeap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DescriptorHeap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
+ ID3D12DescriptorHeap : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_DESCRIPTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_DESCRIPTOR_HEAP_DESC * RetVal) = 0;
+#endif
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
+#else
+ virtual D3D12_CPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
+ D3D12_CPU_DESCRIPTOR_HANDLE * RetVal) = 0;
+#endif
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
+#else
+ virtual D3D12_GPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
+ D3D12_GPU_DESCRIPTOR_HANDLE * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DescriptorHeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DescriptorHeap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DescriptorHeap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DescriptorHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12DescriptorHeap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12DescriptorHeap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12DescriptorHeap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12DescriptorHeap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12DescriptorHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DescriptorHeap * This);
+
+#else
+ D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DescriptorHeap * This,
+ D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
+#if !defined(_WIN32)
+ D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
+ ID3D12DescriptorHeap * This);
+
+#else
+ D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
+ ID3D12DescriptorHeap * This,
+ D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
+#if !defined(_WIN32)
+ D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
+ ID3D12DescriptorHeap * This);
+
+#else
+ D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
+ ID3D12DescriptorHeap * This,
+ D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12DescriptorHeapVtbl;
+
+ interface ID3D12DescriptorHeap
+ {
+ CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DescriptorHeap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DescriptorHeap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12DescriptorHeap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12DescriptorHeap_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
+ ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
+#else
+#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
+ ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
+ ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
+#else
+#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
+ ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
+#define __ID3D12QueryHeap_INTERFACE_DEFINED__
+
+/* interface ID3D12QueryHeap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12QueryHeap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
+ ID3D12QueryHeap : public ID3D12Pageable
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12QueryHeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12QueryHeap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12QueryHeap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12QueryHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12QueryHeap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12QueryHeap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12QueryHeap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12QueryHeap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12QueryHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12QueryHeapVtbl;
+
+ interface ID3D12QueryHeap
+ {
+ CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12QueryHeap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12QueryHeap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12QueryHeap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
+#define __ID3D12CommandSignature_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandSignature */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandSignature;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
+ ID3D12CommandSignature : public ID3D12Pageable
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandSignatureVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandSignature * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandSignature * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandSignature * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandSignature * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandSignature * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandSignature * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandSignature * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandSignature * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12CommandSignatureVtbl;
+
+ interface ID3D12CommandSignature
+ {
+ CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandSignature_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandSignature_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandSignature_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
+#define __ID3D12CommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
+ ID3D12CommandList : public ID3D12DeviceChild
+ {
+ public:
+ virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandList * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandList * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandList * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandList * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandList * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12CommandList * This);
+
+ END_INTERFACE
+ } ID3D12CommandListVtbl;
+
+ interface ID3D12CommandList
+ {
+ CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandList_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12CommandList_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
+ ID3D12GraphicsCommandList : public ID3D12CommandList
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearState(
+ _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawInstanced(
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE Dispatch(
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyBufferRegion(
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyTextureRegion(
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyResource(
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyTiles(
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveSubresource(
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetViewports(
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetScissorRects(
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetBlendFactor(
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetStencilRef(
+ _In_ UINT StencilRef) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPipelineState(
+ _In_ ID3D12PipelineState *pPipelineState) = 0;
+
+ virtual void STDMETHODCALLTYPE ResourceBarrier(
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteBundle(
+ _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
+
+ virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRootSignature(
+ _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
+ _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetIndexBuffer(
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetVertexBuffers(
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
+
+ virtual void STDMETHODCALLTYPE SOSetTargets(
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetRenderTargets(
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearDepthStencilView(
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearRenderTargetView(
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE DiscardResource(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE EndQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveQueryData(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPredication(
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMarker(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginEvent(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteIndirect(
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandListVtbl;
+
+ interface ID3D12GraphicsCommandList
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
+ ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
+ {
+ public:
+ virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
+
+ virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetDepthBounds(
+ _In_ FLOAT Min,
+ _In_ FLOAT Max) = 0;
+
+ virtual void STDMETHODCALLTYPE SetSamplePositions(
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
+
+ virtual void STDMETHODCALLTYPE SetViewInstanceMask(
+ _In_ UINT Mask) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList1 * This,
+ _In_ UINT Mask);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList1Vtbl;
+
+ interface ID3D12GraphicsCommandList1
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList1_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList1_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0019 */
+/* [local] */
+
+typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS Dest;
+ UINT32 Value;
+ } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
+
+typedef
+enum D3D12_WRITEBUFFERIMMEDIATE_MODE
+ {
+ D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
+ D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
+ D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
+ } D3D12_WRITEBUFFERIMMEDIATE_MODE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
+
+#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
+ ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
+ {
+ public:
+ virtual void STDMETHODCALLTYPE WriteBufferImmediate(
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList2 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList2 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList2Vtbl;
+
+ interface ID3D12GraphicsCommandList2
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList2_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList2_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList2_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
+#define __ID3D12CommandQueue_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandQueue */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandQueue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
+ ID3D12CommandQueue : public ID3D12Pageable
+ {
+ public:
+ virtual void STDMETHODCALLTYPE UpdateTileMappings(
+ _In_ ID3D12Resource *pResource,
+ UINT NumResourceRegions,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
+ _In_opt_ ID3D12Heap *pHeap,
+ UINT NumRanges,
+ _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
+ _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
+ _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
+ D3D12_TILE_MAPPING_FLAGS Flags) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyTileMappings(
+ _In_ ID3D12Resource *pDstResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
+ D3D12_TILE_MAPPING_FLAGS Flags) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteCommandLists(
+ _In_ UINT NumCommandLists,
+ _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMarker(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginEvent(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Signal(
+ ID3D12Fence *pFence,
+ UINT64 Value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Wait(
+ ID3D12Fence *pFence,
+ UINT64 Value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
+ _Out_ UINT64 *pFrequency) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
+ _Out_ UINT64 *pGpuTimestamp,
+ _Out_ UINT64 *pCpuTimestamp) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_COMMAND_QUEUE_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_COMMAND_QUEUE_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandQueueVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandQueue * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandQueue * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandQueue * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandQueue * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandQueue * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandQueue * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandQueue * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
+ void ( STDMETHODCALLTYPE *UpdateTileMappings )(
+ ID3D12CommandQueue * This,
+ _In_ ID3D12Resource *pResource,
+ UINT NumResourceRegions,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
+ _In_opt_ ID3D12Heap *pHeap,
+ UINT NumRanges,
+ _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
+ _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
+ _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
+ void ( STDMETHODCALLTYPE *CopyTileMappings )(
+ ID3D12CommandQueue * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
+ void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
+ ID3D12CommandQueue * This,
+ _In_ UINT NumCommandLists,
+ _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12CommandQueue * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12CommandQueue * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12CommandQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
+ HRESULT ( STDMETHODCALLTYPE *Signal )(
+ ID3D12CommandQueue * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
+ HRESULT ( STDMETHODCALLTYPE *Wait )(
+ ID3D12CommandQueue * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
+ HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
+ ID3D12CommandQueue * This,
+ _Out_ UINT64 *pFrequency);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
+ HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
+ ID3D12CommandQueue * This,
+ _Out_ UINT64 *pGpuTimestamp,
+ _Out_ UINT64 *pCpuTimestamp);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
+#if !defined(_WIN32)
+ D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue * This);
+
+#else
+ D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue * This,
+ D3D12_COMMAND_QUEUE_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12CommandQueueVtbl;
+
+ interface ID3D12CommandQueue
+ {
+ CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandQueue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandQueue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandQueue_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
+ ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
+
+#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
+ ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
+
+#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
+ ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
+
+#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12CommandQueue_Signal(This,pFence,Value) \
+ ( (This)->lpVtbl -> Signal(This,pFence,Value) )
+
+#define ID3D12CommandQueue_Wait(This,pFence,Value) \
+ ( (This)->lpVtbl -> Wait(This,pFence,Value) )
+
+#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
+ ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
+
+#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
+ ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
+#if !defined(_WIN32)
+
+#define ID3D12CommandQueue_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12CommandQueue_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0021 */
+/* [local] */
+
+typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
+ {
+ _Out_ UINT ComputeQueuesPer3DQueue;
+ } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
+
+typedef
+enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
+ {
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
+ } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
+
+typedef
+enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
+ {
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
+ } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
+
+#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
+#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandQueue1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandQueue1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
+ ID3D12CommandQueue1 : public ID3D12CommandQueue
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandQueue1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandQueue1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
+ void ( STDMETHODCALLTYPE *UpdateTileMappings )(
+ ID3D12CommandQueue1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT NumResourceRegions,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
+ _In_opt_ ID3D12Heap *pHeap,
+ UINT NumRanges,
+ _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
+ _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
+ _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
+ void ( STDMETHODCALLTYPE *CopyTileMappings )(
+ ID3D12CommandQueue1 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
+ void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
+ ID3D12CommandQueue1 * This,
+ _In_ UINT NumCommandLists,
+ _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12CommandQueue1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12CommandQueue1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
+ HRESULT ( STDMETHODCALLTYPE *Signal )(
+ ID3D12CommandQueue1 * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
+ HRESULT ( STDMETHODCALLTYPE *Wait )(
+ ID3D12CommandQueue1 * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
+ HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
+ ID3D12CommandQueue1 * This,
+ _Out_ UINT64 *pFrequency);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
+ HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
+ ID3D12CommandQueue1 * This,
+ _Out_ UINT64 *pGpuTimestamp,
+ _Out_ UINT64 *pCpuTimestamp);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
+#if !defined(_WIN32)
+ D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue1 * This);
+
+#else
+ D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
+ HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
+
+ END_INTERFACE
+ } ID3D12CommandQueue1Vtbl;
+
+ interface ID3D12CommandQueue1
+ {
+ CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandQueue1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandQueue1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandQueue1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
+ ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
+
+#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
+ ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
+
+#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
+ ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
+
+#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
+ ( (This)->lpVtbl -> Signal(This,pFence,Value) )
+
+#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
+ ( (This)->lpVtbl -> Wait(This,pFence,Value) )
+
+#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
+ ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
+
+#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
+ ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
+#if !defined(_WIN32)
+
+#define ID3D12CommandQueue1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+
+#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
+ ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
+
+#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
+ ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
+
+#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
+ ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
+
+#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
+ ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device_INTERFACE_DEFINED__
+#define __ID3D12Device_INTERFACE_DEFINED__
+
+/* interface ID3D12Device */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
+ ID3D12Device : public ID3D12Object
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateConstantBufferView(
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateShaderResourceView(
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateRenderTargetView(
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateDepthStencilView(
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateSampler(
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyDescriptors(
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
+#else
+ virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
+#endif
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType) = 0;
+#else
+ virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateHeap(
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MakeResident(
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Evict(
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateFence(
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
+
+ virtual void STDMETHODCALLTYPE GetCopyableFootprints(
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
+ BOOL Enable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
+
+ virtual void STDMETHODCALLTYPE GetResourceTiling(
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
+#else
+ virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
+ LUID * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device * This,
+ LUID * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12DeviceVtbl;
+
+ interface ID3D12Device
+ {
+ CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
+#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
+
+/* interface ID3D12PipelineLibrary */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PipelineLibrary;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
+ ID3D12PipelineLibrary : public ID3D12DeviceChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE StorePipeline(
+ _In_opt_ LPCWSTR pName,
+ _In_ ID3D12PipelineState *pPipeline) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Serialize(
+ _Out_writes_(DataSizeInBytes) void *pData,
+ SIZE_T DataSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PipelineLibraryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PipelineLibrary * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PipelineLibrary * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PipelineLibrary * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12PipelineLibrary * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12PipelineLibrary * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12PipelineLibrary * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12PipelineLibrary * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12PipelineLibrary * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
+ HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
+ ID3D12PipelineLibrary * This,
+ _In_opt_ LPCWSTR pName,
+ _In_ ID3D12PipelineState *pPipeline);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
+ HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
+ ID3D12PipelineLibrary * This,
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
+ HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
+ ID3D12PipelineLibrary * This,
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
+ SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
+ ID3D12PipelineLibrary * This);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
+ HRESULT ( STDMETHODCALLTYPE *Serialize )(
+ ID3D12PipelineLibrary * This,
+ _Out_writes_(DataSizeInBytes) void *pData,
+ SIZE_T DataSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12PipelineLibraryVtbl;
+
+ interface ID3D12PipelineLibrary
+ {
+ CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PipelineLibrary_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PipelineLibrary_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12PipelineLibrary_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
+ ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
+
+#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
+
+#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
+
+#define ID3D12PipelineLibrary_GetSerializedSize(This) \
+ ( (This)->lpVtbl -> GetSerializedSize(This) )
+
+#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
+ ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
+#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
+
+/* interface ID3D12PipelineLibrary1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PipelineLibrary1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
+ ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PipelineLibrary1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PipelineLibrary1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PipelineLibrary1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PipelineLibrary1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12PipelineLibrary1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12PipelineLibrary1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
+ HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
+ ID3D12PipelineLibrary1 * This,
+ _In_opt_ LPCWSTR pName,
+ _In_ ID3D12PipelineState *pPipeline);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
+ HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
+ HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
+ SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
+ ID3D12PipelineLibrary1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
+ HRESULT ( STDMETHODCALLTYPE *Serialize )(
+ ID3D12PipelineLibrary1 * This,
+ _Out_writes_(DataSizeInBytes) void *pData,
+ SIZE_T DataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
+ HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
+ ID3D12PipelineLibrary1 * This,
+ _In_ LPCWSTR pName,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ END_INTERFACE
+ } ID3D12PipelineLibrary1Vtbl;
+
+ interface ID3D12PipelineLibrary1
+ {
+ CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PipelineLibrary1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PipelineLibrary1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12PipelineLibrary1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
+ ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
+
+#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
+
+#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
+
+#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
+ ( (This)->lpVtbl -> GetSerializedSize(This) )
+
+#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
+ ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
+
+
+#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0025 */
+/* [local] */
+
+typedef
+enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
+ {
+ D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
+ } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
+typedef
+enum D3D12_RESIDENCY_PRIORITY
+ {
+ D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
+ D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
+ D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
+ D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
+ D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
+ } D3D12_RESIDENCY_PRIORITY;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
+
+#ifndef __ID3D12Device1_INTERFACE_DEFINED__
+#define __ID3D12Device1_INTERFACE_DEFINED__
+
+/* interface ID3D12Device1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
+ ID3D12Device1 : public ID3D12Device
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device1 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device1 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device1 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device1 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device1 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device1 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device1 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device1 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device1 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device1 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device1 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device1 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device1 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device1 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device1 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device1 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device1 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device1 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device1 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device1 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device1 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device1 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device1 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device1 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device1 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device1 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device1 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device1 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device1 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device1 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device1 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ END_INTERFACE
+ } ID3D12Device1Vtbl;
+
+ interface ID3D12Device1
+ {
+ CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device1_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device1_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device1_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device1_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device2_INTERFACE_DEFINED__
+#define __ID3D12Device2_INTERFACE_DEFINED__
+
+/* interface ID3D12Device2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
+ ID3D12Device2 : public ID3D12Device1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device2 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device2 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device2 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device2 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device2 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device2 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device2 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device2 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device2 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device2 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device2 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device2 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device2 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device2 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device2 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device2 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device2 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device2 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device2 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device2 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device2 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device2 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device2 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device2 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device2 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device2 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device2 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device2 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device2 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device2 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device2 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device2 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ END_INTERFACE
+ } ID3D12Device2Vtbl;
+
+ interface ID3D12Device2
+ {
+ CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device2_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device2_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device2_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device2_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0027 */
+/* [local] */
+
+typedef
+enum D3D12_RESIDENCY_FLAGS
+ {
+ D3D12_RESIDENCY_FLAG_NONE = 0,
+ D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
+ } D3D12_RESIDENCY_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
+
+#ifndef __ID3D12Device3_INTERFACE_DEFINED__
+#define __ID3D12Device3_INTERFACE_DEFINED__
+
+/* interface ID3D12Device3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
+ ID3D12Device3 : public ID3D12Device2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device3 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device3 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device3 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device3 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device3 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device3 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device3 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device3 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device3 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device3 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device3 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device3 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device3 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device3 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device3 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device3 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device3 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device3 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device3 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device3 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device3 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device3 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device3 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device3 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device3 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device3 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device3 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device3 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device3 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device3 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device3 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device3 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device3 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device3 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device3 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device3 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device3 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device3 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device3 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ END_INTERFACE
+ } ID3D12Device3Vtbl;
+
+ interface ID3D12Device3
+ {
+ CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device3_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device3_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device3_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device3_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device3_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0028 */
+/* [local] */
+
+typedef
+enum D3D12_COMMAND_LIST_FLAGS
+ {
+ D3D12_COMMAND_LIST_FLAG_NONE = 0
+ } D3D12_COMMAND_LIST_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
+typedef
+enum D3D12_COMMAND_POOL_FLAGS
+ {
+ D3D12_COMMAND_POOL_FLAG_NONE = 0
+ } D3D12_COMMAND_POOL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
+typedef
+enum D3D12_COMMAND_RECORDER_FLAGS
+ {
+ D3D12_COMMAND_RECORDER_FLAG_NONE = 0
+ } D3D12_COMMAND_RECORDER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
+typedef
+enum D3D12_PROTECTED_SESSION_STATUS
+ {
+ D3D12_PROTECTED_SESSION_STATUS_OK = 0,
+ D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
+ } D3D12_PROTECTED_SESSION_STATUS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
+
+#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
+#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
+
+/* interface ID3D12ProtectedSession */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12ProtectedSession;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
+ ID3D12ProtectedSession : public ID3D12DeviceChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppFence) = 0;
+
+ virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ProtectedSessionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12ProtectedSession * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12ProtectedSession * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12ProtectedSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12ProtectedSession * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12ProtectedSession * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12ProtectedSession * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12ProtectedSession * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12ProtectedSession * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
+ HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
+ ID3D12ProtectedSession * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
+ D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
+ ID3D12ProtectedSession * This);
+
+ END_INTERFACE
+ } ID3D12ProtectedSessionVtbl;
+
+ interface ID3D12ProtectedSession
+ {
+ CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12ProtectedSession_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12ProtectedSession_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12ProtectedSession_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
+ ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
+
+#define ID3D12ProtectedSession_GetSessionStatus(This) \
+ ( (This)->lpVtbl -> GetSessionStatus(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0029 */
+/* [local] */
+
+typedef
+enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
+ {
+ D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
+ D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
+ } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
+ } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
+
+typedef
+enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
+ {
+ D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
+ } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
+typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
+ {
+ UINT NodeMask;
+ D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
+ } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
+
+#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
+#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
+
+/* interface ID3D12ProtectedResourceSession */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
+ ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ProtectedResourceSessionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12ProtectedResourceSession * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12ProtectedResourceSession * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12ProtectedResourceSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12ProtectedResourceSession * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12ProtectedResourceSession * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12ProtectedResourceSession * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12ProtectedResourceSession * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12ProtectedResourceSession * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
+ HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
+ ID3D12ProtectedResourceSession * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
+ D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
+ ID3D12ProtectedResourceSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
+#if !defined(_WIN32)
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ProtectedResourceSession * This);
+
+#else
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ProtectedResourceSession * This,
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12ProtectedResourceSessionVtbl;
+
+ interface ID3D12ProtectedResourceSession
+ {
+ CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12ProtectedResourceSession_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12ProtectedResourceSession_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12ProtectedResourceSession_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
+ ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
+
+#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
+ ( (This)->lpVtbl -> GetSessionStatus(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12ProtectedResourceSession_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device4_INTERFACE_DEFINED__
+#define __ID3D12Device4_INTERFACE_DEFINED__
+
+/* interface ID3D12Device4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
+ ID3D12Device4 : public ID3D12Device3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#else
+ virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo1(
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device4 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device4 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device4 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device4 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device4 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device4 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device4 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device4 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device4 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device4 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device4 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device4 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device4 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device4 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device4 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device4 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device4 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device4 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device4 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device4 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device4 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device4 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device4 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device4 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device4 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device4 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device4 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device4 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device4 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device4 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device4 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device4 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device4 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device4 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device4 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device4 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device4 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device4 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device4 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device4 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device4 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device4 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12Device4Vtbl;
+
+ interface ID3D12Device4
+ {
+ CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device4_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device4_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device4_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device4_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device4_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0031 */
+/* [local] */
+
+typedef
+enum D3D12_LIFETIME_STATE
+ {
+ D3D12_LIFETIME_STATE_IN_USE = 0,
+ D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
+ } D3D12_LIFETIME_STATE;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
+
+#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
+#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
+
+/* interface ID3D12LifetimeOwner */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12LifetimeOwner;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
+ ID3D12LifetimeOwner : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
+ D3D12_LIFETIME_STATE NewState) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12LifetimeOwnerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12LifetimeOwner * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12LifetimeOwner * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12LifetimeOwner * This);
+
+ DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
+ void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
+ ID3D12LifetimeOwner * This,
+ D3D12_LIFETIME_STATE NewState);
+
+ END_INTERFACE
+ } ID3D12LifetimeOwnerVtbl;
+
+ interface ID3D12LifetimeOwner
+ {
+ CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12LifetimeOwner_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12LifetimeOwner_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
+ ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
+#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
+
+/* interface ID3D12SwapChainAssistant */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12SwapChainAssistant;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
+ ID3D12SwapChainAssistant : public IUnknown
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
+#else
+ virtual LUID *STDMETHODCALLTYPE GetLUID(
+ LUID * RetVal) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
+ REFIID riid,
+ _COM_Outptr_ void **ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
+ REFIID riidResource,
+ _COM_Outptr_ void **ppvResource,
+ REFIID riidQueue,
+ _COM_Outptr_ void **ppvQueue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12SwapChainAssistantVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12SwapChainAssistant * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12SwapChainAssistant * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12SwapChainAssistant * This);
+
+ DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetLUID )(
+ ID3D12SwapChainAssistant * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetLUID )(
+ ID3D12SwapChainAssistant * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
+ HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
+ ID3D12SwapChainAssistant * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppv);
+
+ DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
+ ID3D12SwapChainAssistant * This,
+ REFIID riidResource,
+ _COM_Outptr_ void **ppvResource,
+ REFIID riidQueue,
+ _COM_Outptr_ void **ppvQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
+ HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
+ ID3D12SwapChainAssistant * This);
+
+ END_INTERFACE
+ } ID3D12SwapChainAssistantVtbl;
+
+ interface ID3D12SwapChainAssistant
+ {
+ CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12SwapChainAssistant_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12SwapChainAssistant_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12SwapChainAssistant_GetLUID(This) \
+ ( (This)->lpVtbl -> GetLUID(This) )
+#else
+#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
+ ( (This)->lpVtbl -> GetLUID(This,RetVal) )
+#endif
+
+#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
+ ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
+
+#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
+ ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
+
+#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
+ ( (This)->lpVtbl -> InsertImplicitSync(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
+#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
+
+/* interface ID3D12LifetimeTracker */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12LifetimeTracker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
+ ID3D12LifetimeTracker : public ID3D12DeviceChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
+ _In_ ID3D12DeviceChild *pObject) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12LifetimeTrackerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12LifetimeTracker * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12LifetimeTracker * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12LifetimeTracker * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12LifetimeTracker * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12LifetimeTracker * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12LifetimeTracker * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12LifetimeTracker * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12LifetimeTracker * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
+ HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
+ ID3D12LifetimeTracker * This,
+ _In_ ID3D12DeviceChild *pObject);
+
+ END_INTERFACE
+ } ID3D12LifetimeTrackerVtbl;
+
+ interface ID3D12LifetimeTracker
+ {
+ CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12LifetimeTracker_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12LifetimeTracker_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12LifetimeTracker_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
+ ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0034 */
+/* [local] */
+
+typedef
+enum D3D12_META_COMMAND_PARAMETER_TYPE
+ {
+ D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
+ D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
+ D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
+ D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
+ D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
+ } D3D12_META_COMMAND_PARAMETER_TYPE;
+
+typedef
+enum D3D12_META_COMMAND_PARAMETER_FLAGS
+ {
+ D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
+ D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
+ } D3D12_META_COMMAND_PARAMETER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
+typedef
+enum D3D12_META_COMMAND_PARAMETER_STAGE
+ {
+ D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
+ D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
+ D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
+ } D3D12_META_COMMAND_PARAMETER_STAGE;
+
+typedef struct D3D12_META_COMMAND_PARAMETER_DESC
+ {
+ LPCWSTR Name;
+ D3D12_META_COMMAND_PARAMETER_TYPE Type;
+ D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
+ D3D12_RESOURCE_STATES RequiredResourceState;
+ UINT StructureOffset;
+ } D3D12_META_COMMAND_PARAMETER_DESC;
+
+typedef
+enum D3D12_GRAPHICS_STATES
+ {
+ D3D12_GRAPHICS_STATE_NONE = 0,
+ D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
+ D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
+ D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
+ D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
+ D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
+ D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
+ D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
+ D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
+ D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
+ D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
+ D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
+ D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
+ D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
+ D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
+ D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
+ D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
+ D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
+ } D3D12_GRAPHICS_STATES;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
+typedef struct D3D12_META_COMMAND_DESC
+ {
+ GUID Id;
+ LPCWSTR Name;
+ D3D12_GRAPHICS_STATES InitializationDirtyState;
+ D3D12_GRAPHICS_STATES ExecutionDirtyState;
+ } D3D12_META_COMMAND_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
+#define __ID3D12StateObject_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObject */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
+ ID3D12StateObject : public ID3D12Pageable
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObject * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObject * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObject * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12StateObject * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12StateObject * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12StateObject * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12StateObject * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12StateObject * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12StateObjectVtbl;
+
+ interface ID3D12StateObject
+ {
+ CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObject_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObject_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12StateObject_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
+#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectProperties */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectProperties;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
+ ID3D12StateObjectProperties : public IUnknown
+ {
+ public:
+ virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
+ _In_ LPCWSTR pExportName) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
+ _In_ LPCWSTR pExportName) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPipelineStackSize(
+ UINT64 PipelineStackSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectPropertiesVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectProperties * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectProperties * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
+ void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
+ ID3D12StateObjectProperties * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
+ ID3D12StateObjectProperties * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
+ ID3D12StateObjectProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
+ void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
+ ID3D12StateObjectProperties * This,
+ UINT64 PipelineStackSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12StateObjectPropertiesVtbl;
+
+ interface ID3D12StateObjectProperties
+ {
+ CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectProperties_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectProperties_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
+
+#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
+
+#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
+ ( (This)->lpVtbl -> GetPipelineStackSize(This) )
+
+#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
+ ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0036 */
+/* [local] */
+
+typedef struct D3D12_PROGRAM_IDENTIFIER
+ {
+ UINT64 OpaqueData[ 4 ];
+ } D3D12_PROGRAM_IDENTIFIER;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
+#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectProperties1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectProperties1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
+ ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
+ LPCWSTR pProgramName) = 0;
+#else
+ virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectProperties1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectProperties1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
+ void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
+ ID3D12StateObjectProperties1 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
+ void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
+ ID3D12StateObjectProperties1 * This,
+ UINT64 PipelineStackSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
+#if !defined(_WIN32)
+ D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ LPCWSTR pProgramName);
+
+#else
+ D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12StateObjectProperties1Vtbl;
+
+ interface ID3D12StateObjectProperties1
+ {
+ CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectProperties1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectProperties1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
+
+#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
+
+#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
+ ( (This)->lpVtbl -> GetPipelineStackSize(This) )
+
+#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
+ ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
+
+#if !defined(_WIN32)
+
+#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
+#else
+#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
+#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectProperties2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectProperties2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
+ ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
+ LPCWSTR pProgramName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
+ LPCWSTR pExportName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectProperties2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectProperties2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
+ void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
+ ID3D12StateObjectProperties2 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
+ void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
+ ID3D12StateObjectProperties2 * This,
+ UINT64 PipelineStackSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
+#if !defined(_WIN32)
+ D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pProgramName);
+
+#else
+ D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pProgramName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pExportName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12StateObjectProperties2Vtbl;
+
+ interface ID3D12StateObjectProperties2
+ {
+ CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectProperties2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectProperties2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
+
+#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
+
+#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
+ ( (This)->lpVtbl -> GetPipelineStackSize(This) )
+
+#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
+ ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
+
+#if !defined(_WIN32)
+
+#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
+#else
+#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
+#endif
+
+
+#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
+
+#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0038 */
+/* [local] */
+
+typedef struct D3D12_NODE_ID
+ {
+ LPCWSTR Name;
+ UINT ArrayIndex;
+ } D3D12_NODE_ID;
+
+typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
+ {
+ UINT64 MinSizeInBytes;
+ UINT64 MaxSizeInBytes;
+ UINT SizeGranularityInBytes;
+ } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
+
+#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
+#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
+
+/* interface ID3D12WorkGraphProperties */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12WorkGraphProperties;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
+ ID3D12WorkGraphProperties : public IUnknown
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
+
+ virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
+ UINT WorkGraphIndex) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
+ LPCWSTR pProgramName) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNumNodes(
+ UINT WorkGraphIndex) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+#else
+ virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+#endif
+
+ virtual UINT STDMETHODCALLTYPE GetNodeIndex(
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
+ UINT WorkGraphIndex) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+#else
+ virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+#endif
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+
+ virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
+ UINT WorkGraphIndex,
+ _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12WorkGraphPropertiesVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12WorkGraphProperties * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
+ UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
+ LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
+ UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
+ ID3D12WorkGraphProperties * This,
+ LPCWSTR pProgramName);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
+ UINT ( STDMETHODCALLTYPE *GetNumNodes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
+#if !defined(_WIN32)
+ D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+#else
+ D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
+ ID3D12WorkGraphProperties * This,
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
+ UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
+ UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
+ UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
+#if !defined(_WIN32)
+ D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+#else
+ D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
+ ID3D12WorkGraphProperties * This,
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
+ void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+ END_INTERFACE
+ } ID3D12WorkGraphPropertiesVtbl;
+
+ interface ID3D12WorkGraphProperties
+ {
+ CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12WorkGraphProperties_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12WorkGraphProperties_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
+ ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
+
+#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
+
+#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
+ ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
+
+#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
+#if !defined(_WIN32)
+
+#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
+#else
+#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
+#endif
+
+#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
+ ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
+
+#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
+
+#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
+#if !defined(_WIN32)
+
+#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
+#else
+#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
+#endif
+
+#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
+ ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
+
+#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
+
+#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
+ ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
+
+#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0039 */
+/* [local] */
+
+typedef
+enum D3D12_STATE_SUBOBJECT_TYPE
+ {
+ D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
+ D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
+ D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
+ D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
+ D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
+ D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
+ D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
+ D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
+ D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
+ D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
+ D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
+ D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
+ D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
+ D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
+ D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
+ D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
+ D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
+ D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
+ D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
+ D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
+ D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
+ D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
+ D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
+ D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
+ D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
+ D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
+ D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
+ D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
+ D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
+ D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
+ } D3D12_STATE_SUBOBJECT_TYPE;
+
+typedef struct D3D12_STATE_SUBOBJECT
+ {
+ D3D12_STATE_SUBOBJECT_TYPE Type;
+ const void *pDesc;
+ } D3D12_STATE_SUBOBJECT;
+
+typedef
+enum D3D12_STATE_OBJECT_FLAGS
+ {
+ D3D12_STATE_OBJECT_FLAG_NONE = 0,
+ D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
+ D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
+ D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
+ } D3D12_STATE_OBJECT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
+typedef struct D3D12_STATE_OBJECT_CONFIG
+ {
+ D3D12_STATE_OBJECT_FLAGS Flags;
+ } D3D12_STATE_OBJECT_CONFIG;
+
+typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
+ {
+ ID3D12RootSignature *pGlobalRootSignature;
+ } D3D12_GLOBAL_ROOT_SIGNATURE;
+
+typedef struct D3D12_LOCAL_ROOT_SIGNATURE
+ {
+ ID3D12RootSignature *pLocalRootSignature;
+ } D3D12_LOCAL_ROOT_SIGNATURE;
+
+typedef struct D3D12_NODE_MASK
+ {
+ UINT NodeMask;
+ } D3D12_NODE_MASK;
+
+typedef struct D3D12_SAMPLE_MASK
+ {
+ UINT SampleMask;
+ } D3D12_SAMPLE_MASK;
+
+typedef struct D3D12_IB_STRIP_CUT_VALUE
+ {
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
+ } D3D12_IB_STRIP_CUT_VALUE;
+
+typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
+ {
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
+ } D3D12_PRIMITIVE_TOPOLOGY_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_FORMAT
+ {
+ DXGI_FORMAT DepthStencilFormat;
+ } D3D12_DEPTH_STENCIL_FORMAT;
+
+typedef
+enum D3D12_EXPORT_FLAGS
+ {
+ D3D12_EXPORT_FLAG_NONE = 0
+ } D3D12_EXPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
+typedef struct D3D12_EXPORT_DESC
+ {
+ LPCWSTR Name;
+ _In_opt_ LPCWSTR ExportToRename;
+ D3D12_EXPORT_FLAGS Flags;
+ } D3D12_EXPORT_DESC;
+
+typedef struct D3D12_DXIL_LIBRARY_DESC
+ {
+ D3D12_SHADER_BYTECODE DXILLibrary;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_DXIL_LIBRARY_DESC;
+
+typedef struct D3D12_EXISTING_COLLECTION_DESC
+ {
+ ID3D12StateObject *pExistingCollection;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_EXISTING_COLLECTION_DESC;
+
+typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+ {
+ const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
+ UINT NumExports;
+ _In_reads_(NumExports) LPCWSTR *pExports;
+ } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+
+typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+ {
+ LPCWSTR SubobjectToAssociate;
+ UINT NumExports;
+ _In_reads_(NumExports) LPCWSTR *pExports;
+ } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+
+typedef
+enum D3D12_HIT_GROUP_TYPE
+ {
+ D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
+ D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
+ } D3D12_HIT_GROUP_TYPE;
+
+typedef struct D3D12_HIT_GROUP_DESC
+ {
+ LPCWSTR HitGroupExport;
+ D3D12_HIT_GROUP_TYPE Type;
+ _In_opt_ LPCWSTR AnyHitShaderImport;
+ _In_opt_ LPCWSTR ClosestHitShaderImport;
+ _In_opt_ LPCWSTR IntersectionShaderImport;
+ } D3D12_HIT_GROUP_DESC;
+
+typedef struct D3D12_RAYTRACING_SHADER_CONFIG
+ {
+ UINT MaxPayloadSizeInBytes;
+ UINT MaxAttributeSizeInBytes;
+ } D3D12_RAYTRACING_SHADER_CONFIG;
+
+typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
+ {
+ UINT MaxTraceRecursionDepth;
+ } D3D12_RAYTRACING_PIPELINE_CONFIG;
+
+typedef
+enum D3D12_RAYTRACING_PIPELINE_FLAGS
+ {
+ D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
+ D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
+ D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
+ D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
+ } D3D12_RAYTRACING_PIPELINE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
+typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
+ {
+ UINT MaxTraceRecursionDepth;
+ D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
+ } D3D12_RAYTRACING_PIPELINE_CONFIG1;
+
+typedef struct D3D12_NODE_OUTPUT_OVERRIDES
+ {
+ UINT OutputIndex;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const BOOL *pAllowSparseNodes;
+ _In_opt_ const UINT *pMaxRecords;
+ _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
+ } D3D12_NODE_OUTPUT_OVERRIDES;
+
+typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ _In_reads_opt_(3) const UINT *pDispatchGrid;
+ _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_COALESCING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_THREAD_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
+
+typedef
+enum D3D12_NODE_OVERRIDES_TYPE
+ {
+ D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
+ D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
+ D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
+ D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
+ D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
+ } D3D12_NODE_OVERRIDES_TYPE;
+
+typedef struct D3D12_SHADER_NODE
+ {
+ LPCWSTR Shader;
+ D3D12_NODE_OVERRIDES_TYPE OverridesType;
+ union
+ {
+ const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
+ const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
+ const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
+ const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
+ } ;
+ } D3D12_SHADER_NODE;
+
+typedef
+enum D3D12_NODE_TYPE
+ {
+ D3D12_NODE_TYPE_SHADER = 0
+ } D3D12_NODE_TYPE;
+
+typedef struct D3D12_NODE
+ {
+ D3D12_NODE_TYPE NodeType;
+ union
+ {
+ D3D12_SHADER_NODE Shader;
+ } ;
+ } D3D12_NODE;
+
+typedef
+enum D3D12_WORK_GRAPH_FLAGS
+ {
+ D3D12_WORK_GRAPH_FLAG_NONE = 0,
+ D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
+ } D3D12_WORK_GRAPH_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
+typedef struct D3D12_WORK_GRAPH_DESC
+ {
+ LPCWSTR ProgramName;
+ D3D12_WORK_GRAPH_FLAGS Flags;
+ UINT NumEntrypoints;
+ _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
+ UINT NumExplicitlyDefinedNodes;
+ _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
+ } D3D12_WORK_GRAPH_DESC;
+
+typedef struct D3D12_GENERIC_PROGRAM_DESC
+ {
+ LPCWSTR ProgramName;
+ UINT NumExports;
+ _In_reads_(NumExports) LPCWSTR *pExports;
+ UINT NumSubobjects;
+ _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
+ } D3D12_GENERIC_PROGRAM_DESC;
+
+typedef
+enum D3D12_STATE_OBJECT_TYPE
+ {
+ D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
+ D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
+ D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
+ } D3D12_STATE_OBJECT_TYPE;
+
+typedef struct D3D12_STATE_OBJECT_DESC
+ {
+ D3D12_STATE_OBJECT_TYPE Type;
+ UINT NumSubobjects;
+ _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
+ } D3D12_STATE_OBJECT_DESC;
+
+typedef
+enum D3D12_RAYTRACING_GEOMETRY_FLAGS
+ {
+ D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
+ D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
+ D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
+ } D3D12_RAYTRACING_GEOMETRY_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
+typedef
+enum D3D12_RAYTRACING_GEOMETRY_TYPE
+ {
+ D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
+ D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
+ D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
+ } D3D12_RAYTRACING_GEOMETRY_TYPE;
+
+typedef
+enum D3D12_RAYTRACING_INSTANCE_FLAGS
+ {
+ D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
+ D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
+ D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
+ D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
+ D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
+ D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
+ D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
+ } D3D12_RAYTRACING_INSTANCE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
+ UINT64 StrideInBytes;
+ } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
+
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
+ UINT64 SizeInBytes;
+ } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
+
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
+ UINT64 SizeInBytes;
+ UINT64 StrideInBytes;
+ } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
+ DXGI_FORMAT IndexFormat;
+ DXGI_FORMAT VertexFormat;
+ UINT IndexCount;
+ UINT VertexCount;
+ D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
+ } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
+
+typedef struct D3D12_RAYTRACING_AABB
+ {
+ FLOAT MinX;
+ FLOAT MinY;
+ FLOAT MinZ;
+ FLOAT MaxX;
+ FLOAT MaxY;
+ FLOAT MaxZ;
+ } D3D12_RAYTRACING_AABB;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
+ {
+ UINT64 AABBCount;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
+ } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
+{
+ UINT ByteOffset;
+ UINT SubdivisionLevel : 16;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
+} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
+typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
+ DXGI_FORMAT OpacityMicromapIndexFormat;
+ UINT OpacityMicromapBaseLocation;
+ D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
+ } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
+ {
+ const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
+ const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
+ } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
+
+typedef
+enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
+typedef
+enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
+
+typedef
+enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
+
+typedef
+enum D3D12_ELEMENTS_LAYOUT
+ {
+ D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
+ D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
+ } D3D12_ELEMENTS_LAYOUT;
+
+typedef
+enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
+ {
+ UINT64 CompactedSizeInBytes;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
+ {
+ UINT64 DecodedSizeInBytes;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
+ UINT NumDescs;
+ } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
+
+// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
+// depending on Type field, NumDescs above is followed by either:
+// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
+// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
+// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
+//
+// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
+//
+// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
+ {
+ UINT64 SerializedSizeInBytes;
+ union
+ {
+ UINT64 NumBottomLevelAccelerationStructurePointers;
+ UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
+ } ;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
+
+typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
+ {
+ GUID DriverOpaqueGUID;
+ BYTE DriverOpaqueVersioningData[ 16 ];
+ } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
+
+typedef
+enum D3D12_SERIALIZED_DATA_TYPE
+ {
+ D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
+ D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
+ } D3D12_SERIALIZED_DATA_TYPE;
+
+typedef
+enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
+ {
+ D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
+ D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
+ D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
+ D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
+ D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
+ } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
+
+typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
+ {
+ D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
+ UINT64 SerializedSizeInBytesIncludingHeader;
+ UINT64 DeserializedSizeInBytes;
+ UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
+ } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
+
+typedef
+enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
+ {
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
+ } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
+
+typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
+ {
+ D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
+ UINT64 SerializedSizeInBytesIncludingHeader;
+ UINT64 DeserializedSizeInBytes;
+ union
+ {
+ UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
+ UINT NumBlocks;
+ } ;
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
+ } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
+
+typedef
+enum D3D12_SERIALIZED_BLOCK_TYPE
+ {
+ D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
+ } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
+
+typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
+ {
+ D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
+ UINT64 NumBlockPointersAfterHeader;
+ } D3D12_RAYTRACING_SERIALIZED_BLOCK;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
+ {
+ UINT64 CurrentSizeInBytes;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_INSTANCE_DESC
+ {
+ FLOAT Transform[ 3 ][ 4 ];
+ UINT InstanceID : 24;
+ UINT InstanceMask : 8;
+ UINT InstanceContributionToHitGroupIndex : 24;
+ UINT Flags : 8;
+ D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
+ } D3D12_RAYTRACING_INSTANCE_DESC;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
+ {
+ D3D12_RAYTRACING_GEOMETRY_TYPE Type;
+ D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
+ union
+ {
+ D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
+ D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
+ D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
+ } ;
+ } D3D12_RAYTRACING_GEOMETRY_DESC;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
+ {
+ UINT Count;
+ UINT SubdivisionLevel;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
+ {
+ UINT NumOmmHistogramEntries;
+ const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
+ D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
+ {
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
+ UINT NumDescs;
+ D3D12_ELEMENTS_LAYOUT DescsLayout;
+ union
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
+ const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
+ const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
+ const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
+ } ;
+ } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
+ D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
+ _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
+ D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
+ } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
+ {
+ UINT64 ResultDataMaxSizeInBytes;
+ UINT64 ScratchDataSizeInBytes;
+ UINT64 UpdateScratchDataSizeInBytes;
+ } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
+ {
+ UINT64 CurrentSizeInBytes;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
+ {
+ UINT64 DecodedSizeInBytes;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
+
+typedef
+enum D3D12_RAY_FLAGS
+ {
+ D3D12_RAY_FLAG_NONE = 0,
+ D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
+ D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
+ D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
+ D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
+ D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
+ D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
+ D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
+ D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
+ D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
+ D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
+ D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
+ } D3D12_RAY_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
+typedef
+enum D3D12_HIT_KIND
+ {
+ D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
+ D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
+ } D3D12_HIT_KIND;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
+
+#ifndef __ID3D12Device5_INTERFACE_DEFINED__
+#define __ID3D12Device5_INTERFACE_DEFINED__
+
+/* interface ID3D12Device5 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device5;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
+ ID3D12Device5 : public ID3D12Device4
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker) = 0;
+
+ virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject) = 0;
+
+ virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
+
+ virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device5 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device5 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device5 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device5 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device5 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device5 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device5 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device5 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device5 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device5 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device5 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device5 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device5 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device5 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device5 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device5 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device5 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device5 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device5 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device5 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device5 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device5 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device5 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device5 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device5 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device5 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device5 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device5 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device5 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device5 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device5 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device5 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device5 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device5 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device5 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device5 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device5 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device5 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device5 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device5 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device5 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device5 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device5 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device5 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device5 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device5 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device5 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device5 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device5 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device5 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ END_INTERFACE
+ } ID3D12Device5Vtbl;
+
+ interface ID3D12Device5
+ {
+ CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device5_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device5_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device5_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device5_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device5_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device5_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device5_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device5_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0040 */
+/* [local] */
+
+typedef
+enum D3D12_MARKER_API
+ {
+ D3D12_MARKER_API_SETMARKER = 0,
+ D3D12_MARKER_API_BEGINEVENT = 1,
+ D3D12_MARKER_API_ENDEVENT = 2,
+ D3D12_MARKER_API_DRAWINSTANCED = 3,
+ D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
+ D3D12_MARKER_API_EXECUTEINDIRECT = 5,
+ D3D12_MARKER_API_DISPATCH = 6,
+ D3D12_MARKER_API_COPYBUFFERREGION = 7,
+ D3D12_MARKER_API_COPYTEXTUREREGION = 8,
+ D3D12_MARKER_API_COPYRESOURCE = 9,
+ D3D12_MARKER_API_COPYTILES = 10,
+ D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
+ D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
+ D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
+ D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
+ D3D12_MARKER_API_RESOURCEBARRIER = 15,
+ D3D12_MARKER_API_EXECUTEBUNDLE = 16,
+ D3D12_MARKER_API_PRESENT = 17,
+ D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
+ D3D12_MARKER_API_BEGINSUBMISSION = 19,
+ D3D12_MARKER_API_ENDSUBMISSION = 20,
+ D3D12_MARKER_API_DECODEFRAME = 21,
+ D3D12_MARKER_API_PROCESSFRAMES = 22,
+ D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
+ D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
+ D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
+ D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
+ D3D12_MARKER_API_DECODEFRAME1 = 27,
+ D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
+ D3D12_MARKER_API_DECODEFRAME2 = 29,
+ D3D12_MARKER_API_PROCESSFRAMES1 = 30,
+ D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
+ D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
+ D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
+ D3D12_MARKER_API_DISPATCHRAYS = 34,
+ D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
+ D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
+ D3D12_MARKER_API_ESTIMATEMOTION = 37,
+ D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
+ D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
+ D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
+ D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
+ D3D12_MARKER_API_DISPATCHMESH = 42,
+ D3D12_MARKER_API_ENCODEFRAME = 43,
+ D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
+ D3D12_MARKER_API_BARRIER = 45,
+ D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
+ D3D12_MARKER_API_DISPATCHGRAPH = 47,
+ D3D12_MARKER_API_SETPROGRAM = 48,
+ D3D12_MARKER_API_ENCODEFRAME1 = 49,
+ D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
+ D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
+ D3D12_MARKER_API_PROCESSFRAMES2 = 52,
+ D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
+ } D3D12_MARKER_API;
+
+typedef
+enum D3D12_AUTO_BREADCRUMB_OP
+ {
+ D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
+ D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
+ D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
+ D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
+ D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
+ D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
+ D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
+ D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
+ D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
+ D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
+ D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
+ D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
+ D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
+ D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
+ D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
+ D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
+ D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
+ D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
+ D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
+ D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
+ D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
+ D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
+ D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
+ D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
+ D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
+ D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
+ D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
+ D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
+ } D3D12_AUTO_BREADCRUMB_OP;
+
+typedef struct D3D12_AUTO_BREADCRUMB_NODE
+ {
+ const char *pCommandListDebugNameA;
+ const wchar_t *pCommandListDebugNameW;
+ const char *pCommandQueueDebugNameA;
+ const wchar_t *pCommandQueueDebugNameW;
+ ID3D12GraphicsCommandList *pCommandList;
+ ID3D12CommandQueue *pCommandQueue;
+ UINT32 BreadcrumbCount;
+ const UINT32 *pLastBreadcrumbValue;
+ const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
+ const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
+ } D3D12_AUTO_BREADCRUMB_NODE;
+
+typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
+ {
+ UINT BreadcrumbIndex;
+ const wchar_t *pContextString;
+ } D3D12_DRED_BREADCRUMB_CONTEXT;
+
+typedef struct D3D12_AUTO_BREADCRUMB_NODE1
+ {
+ const char *pCommandListDebugNameA;
+ const wchar_t *pCommandListDebugNameW;
+ const char *pCommandQueueDebugNameA;
+ const wchar_t *pCommandQueueDebugNameW;
+ ID3D12GraphicsCommandList *pCommandList;
+ ID3D12CommandQueue *pCommandQueue;
+ UINT BreadcrumbCount;
+ const UINT *pLastBreadcrumbValue;
+ const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
+ const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
+ UINT BreadcrumbContextsCount;
+ D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
+ } D3D12_AUTO_BREADCRUMB_NODE1;
+
+typedef
+enum D3D12_DRED_VERSION
+ {
+ D3D12_DRED_VERSION_1_0 = 0x1,
+ D3D12_DRED_VERSION_1_1 = 0x2,
+ D3D12_DRED_VERSION_1_2 = 0x3,
+ D3D12_DRED_VERSION_1_3 = 0x4
+ } D3D12_DRED_VERSION;
+
+typedef
+enum D3D12_DRED_FLAGS
+ {
+ D3D12_DRED_FLAG_NONE = 0,
+ D3D12_DRED_FLAG_FORCE_ENABLE = 1,
+ D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
+ } D3D12_DRED_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
+typedef
+enum D3D12_DRED_ENABLEMENT
+ {
+ D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
+ D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
+ D3D12_DRED_ENABLEMENT_FORCED_ON = 2
+ } D3D12_DRED_ENABLEMENT;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
+ {
+ _In_ D3D12_DRED_FLAGS Flags;
+ _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
+ } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
+
+typedef
+enum D3D12_DRED_ALLOCATION_TYPE
+ {
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
+ D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
+ D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
+ D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
+ D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
+ D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
+ D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
+ D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
+ D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
+ D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
+ D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
+ D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
+ D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
+ D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
+ D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
+ D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
+ D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
+ D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
+ } D3D12_DRED_ALLOCATION_TYPE;
+
+typedef struct D3D12_DRED_ALLOCATION_NODE
+ {
+ const char *ObjectNameA;
+ const wchar_t *ObjectNameW;
+ D3D12_DRED_ALLOCATION_TYPE AllocationType;
+ const struct D3D12_DRED_ALLOCATION_NODE *pNext;
+ } D3D12_DRED_ALLOCATION_NODE;
+
+typedef struct D3D12_DRED_ALLOCATION_NODE1
+ {
+ const char *ObjectNameA;
+ const wchar_t *ObjectNameW;
+ D3D12_DRED_ALLOCATION_TYPE AllocationType;
+ const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
+ const IUnknown *pObject;
+ } D3D12_DRED_ALLOCATION_NODE1;
+
+typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
+ {
+ _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
+ } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
+
+typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
+ {
+ _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
+ } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
+ } D3D12_DRED_PAGE_FAULT_OUTPUT;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
+ } D3D12_DRED_PAGE_FAULT_OUTPUT1;
+
+typedef
+enum D3D12_DRED_PAGE_FAULT_FLAGS
+ {
+ D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
+ } D3D12_DRED_PAGE_FAULT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
+typedef
+enum D3D12_DRED_DEVICE_STATE
+ {
+ D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
+ D3D12_DRED_DEVICE_STATE_HUNG = 3,
+ D3D12_DRED_DEVICE_STATE_FAULT = 6,
+ D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
+ } D3D12_DRED_DEVICE_STATE;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
+ _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
+ D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
+ } D3D12_DRED_PAGE_FAULT_OUTPUT2;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
+ {
+ HRESULT DeviceRemovedReason;
+ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
+ D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
+ } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
+ {
+ HRESULT DeviceRemovedReason;
+ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
+ D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
+ } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
+ {
+ HRESULT DeviceRemovedReason;
+ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
+ D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
+ D3D12_DRED_DEVICE_STATE DeviceState;
+ } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
+
+typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
+ {
+ D3D12_DRED_VERSION Version;
+ union
+ {
+ D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
+ D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
+ D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
+ D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
+ } ;
+ } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedDataSettings */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
+ ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
+ D3D12_DRED_ENABLEMENT Enablement) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
+ D3D12_DRED_ENABLEMENT Enablement) = 0;
+
+ virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
+ D3D12_DRED_ENABLEMENT Enablement) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedDataSettings * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedDataSettings * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedDataSettings * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
+ void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
+ void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
+ void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
+
+ interface ID3D12DeviceRemovedExtendedDataSettings
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
+ ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
+ D3D12_DRED_ENABLEMENT Enablement) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
+ void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
+ void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
+ void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
+ void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings1 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
+
+ interface ID3D12DeviceRemovedExtendedDataSettings1
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedDataSettings2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("61552388-01ab-4008-a436-83db189566ea")
+ ID3D12DeviceRemovedExtendedDataSettings2 : public ID3D12DeviceRemovedExtendedDataSettings1
+ {
+ public:
+ virtual void STDMETHODCALLTYPE UseMarkersOnlyAutoBreadcrumbs(
+ BOOL MarkersOnly) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
+ void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
+ void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
+ void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
+ void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ D3D12_DRED_ENABLEMENT Enablement);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings2, UseMarkersOnlyAutoBreadcrumbs)
+ void ( STDMETHODCALLTYPE *UseMarkersOnlyAutoBreadcrumbs )(
+ ID3D12DeviceRemovedExtendedDataSettings2 * This,
+ BOOL MarkersOnly);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedDataSettings2Vtbl;
+
+ interface ID3D12DeviceRemovedExtendedDataSettings2
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement) \
+ ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
+
+
+#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) \
+ ( (This)->lpVtbl -> UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedData */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
+ ID3D12DeviceRemovedExtendedData : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedDataVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedData * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedData * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedData * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
+ ID3D12DeviceRemovedExtendedData * This,
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
+ ID3D12DeviceRemovedExtendedData * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedDataVtbl;
+
+ interface ID3D12DeviceRemovedExtendedData
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedData_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedData1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
+ ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedData1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedData1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedData1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
+ ID3D12DeviceRemovedExtendedData1 * This,
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
+ ID3D12DeviceRemovedExtendedData1 * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
+ HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
+ ID3D12DeviceRemovedExtendedData1 * This,
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
+ ID3D12DeviceRemovedExtendedData1 * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedData1Vtbl;
+
+ interface ID3D12DeviceRemovedExtendedData1
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedData1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
+
+
+#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
+ ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
+#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceRemovedExtendedData2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
+ ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
+
+ virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceRemovedExtendedData2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceRemovedExtendedData2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
+ HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
+ HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
+ ID3D12DeviceRemovedExtendedData2 * This,
+ _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
+ D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
+ ID3D12DeviceRemovedExtendedData2 * This);
+
+ END_INTERFACE
+ } ID3D12DeviceRemovedExtendedData2Vtbl;
+
+ interface ID3D12DeviceRemovedExtendedData2
+ {
+ CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceRemovedExtendedData2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
+
+
+#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
+ ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
+
+
+#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
+ ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
+
+#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
+ ( (This)->lpVtbl -> GetDeviceState(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0046 */
+/* [local] */
+
+typedef
+enum D3D12_BACKGROUND_PROCESSING_MODE
+ {
+ D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
+ D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
+ D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
+ D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
+ } D3D12_BACKGROUND_PROCESSING_MODE;
+
+typedef
+enum D3D12_MEASUREMENTS_ACTION
+ {
+ D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
+ D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
+ D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
+ D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
+ } D3D12_MEASUREMENTS_ACTION;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
+
+#ifndef __ID3D12Device6_INTERFACE_DEFINED__
+#define __ID3D12Device6_INTERFACE_DEFINED__
+
+/* interface ID3D12Device6 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
+ ID3D12Device6 : public ID3D12Device5
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device6 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device6 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device6 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device6 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device6 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device6 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device6 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device6 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device6 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device6 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device6 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device6 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device6 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device6 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device6 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device6 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device6 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device6 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device6 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device6 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device6 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device6 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device6 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device6 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device6 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device6 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device6 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device6 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device6 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device6 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device6 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device6 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device6 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device6 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device6 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device6 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device6 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device6 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device6 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device6 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device6 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device6 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device6 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device6 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device6 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device6 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device6 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device6 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device6 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device6 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device6 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ END_INTERFACE
+ } ID3D12Device6Vtbl;
+
+ interface ID3D12Device6
+ {
+ CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device6_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device6_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device6_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device6_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device6_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device6_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device6_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device6_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0047 */
+/* [local] */
+
+DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
+ {
+ UINT NodeIndex;
+ UINT Count;
+ } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
+ {
+ UINT NodeIndex;
+ UINT Count;
+ GUID *pTypes;
+ } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
+
+typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
+ {
+ UINT NodeMask;
+ D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
+ GUID ProtectionType;
+ } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
+
+#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
+#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
+
+/* interface ID3D12ProtectedResourceSession1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
+ ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
+#else
+ virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *STDMETHODCALLTYPE GetDesc1(
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ProtectedResourceSession1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12ProtectedResourceSession1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12ProtectedResourceSession1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12ProtectedResourceSession1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12ProtectedResourceSession1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12ProtectedResourceSession1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12ProtectedResourceSession1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12ProtectedResourceSession1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12ProtectedResourceSession1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
+ HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
+ ID3D12ProtectedResourceSession1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
+ D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
+ ID3D12ProtectedResourceSession1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
+#if !defined(_WIN32)
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ProtectedResourceSession1 * This);
+
+#else
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ProtectedResourceSession1 * This,
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
+#if !defined(_WIN32)
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
+ ID3D12ProtectedResourceSession1 * This);
+
+#else
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
+ ID3D12ProtectedResourceSession1 * This,
+ D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12ProtectedResourceSession1Vtbl;
+
+ interface ID3D12ProtectedResourceSession1
+ {
+ CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12ProtectedResourceSession1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12ProtectedResourceSession1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
+ ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
+
+#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
+ ( (This)->lpVtbl -> GetSessionStatus(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12ProtectedResourceSession1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#if !defined(_WIN32)
+
+#define ID3D12ProtectedResourceSession1_GetDesc1(This) \
+ ( (This)->lpVtbl -> GetDesc1(This) )
+#else
+#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device7_INTERFACE_DEFINED__
+#define __ID3D12Device7_INTERFACE_DEFINED__
+
+/* interface ID3D12Device7 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device7;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
+ ID3D12Device7 : public ID3D12Device6
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device7 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device7 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device7 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device7 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device7 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device7 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device7 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device7 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device7 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device7 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device7 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device7 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device7 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device7 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device7 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device7 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device7 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device7 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device7 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device7 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device7 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device7 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device7 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device7 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device7 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device7 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device7 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device7 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device7 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device7 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device7 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device7 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device7 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device7 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device7 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device7 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device7 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device7 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device7 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device7 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device7 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device7 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device7 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device7 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device7 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device7 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device7 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device7 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device7 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device7 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device7 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device7 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ END_INTERFACE
+ } ID3D12Device7Vtbl;
+
+ interface ID3D12Device7
+ {
+ CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device7_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device7_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device7_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device7_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device7_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device7_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device7_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device7_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device7_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device7_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device7_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device8_INTERFACE_DEFINED__
+#define __ID3D12Device8_INTERFACE_DEFINED__
+
+/* interface ID3D12Device8 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device8;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
+ ID3D12Device8 : public ID3D12Device7
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#else
+ virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo2(
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device8 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device8 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device8 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device8 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device8 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device8 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device8 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device8 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device8 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device8 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device8 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device8 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device8 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device8 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device8 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device8 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device8 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device8 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device8 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device8 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device8 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device8 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device8 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device8 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device8 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device8 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device8 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device8 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device8 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device8 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device8 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device8 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device8 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device8 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device8 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device8 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device8 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device8 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device8 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device8 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device8 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device8 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device8 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device8 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device8 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device8 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device8 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device8 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device8 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device8 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device8 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device8 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device8 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device8 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device8 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device8 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ END_INTERFACE
+ } ID3D12Device8Vtbl;
+
+ interface ID3D12Device8
+ {
+ CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device8_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device8_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device8_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device8_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device8_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device8_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device8_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device8_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device8_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device8_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device8_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device8_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
+#define __ID3D12Resource1_INTERFACE_DEFINED__
+
+/* interface ID3D12Resource1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Resource1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
+ ID3D12Resource1 : public ID3D12Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Resource1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Resource1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Resource1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Resource1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Resource1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Resource1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Resource1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Resource1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Resource1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Map)
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D12Resource1 * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pReadRange,
+ _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D12Resource1 * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource1 * This);
+
+#else
+ D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource1 * This,
+ D3D12_RESOURCE_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
+ D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
+ ID3D12Resource1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
+ HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
+ ID3D12Resource1 * This,
+ UINT DstSubresource,
+ _In_opt_ const D3D12_BOX *pDstBox,
+ _In_ const void *pSrcData,
+ UINT SrcRowPitch,
+ UINT SrcDepthPitch);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
+ HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
+ ID3D12Resource1 * This,
+ _Out_ void *pDstData,
+ UINT DstRowPitch,
+ UINT DstDepthPitch,
+ UINT SrcSubresource,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
+ HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
+ ID3D12Resource1 * This,
+ _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
+ _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12Resource1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12Resource1Vtbl;
+
+ interface ID3D12Resource1
+ {
+ CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Resource1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Resource1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Resource1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
+ ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
+
+#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
+#if !defined(_WIN32)
+
+#define ID3D12Resource1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12Resource1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12Resource1_GetGPUVirtualAddress(This) \
+ ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
+
+#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
+
+#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
+ ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
+
+
+#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
+#define __ID3D12Resource2_INTERFACE_DEFINED__
+
+/* interface ID3D12Resource2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Resource2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
+ ID3D12Resource2 : public ID3D12Resource1
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
+#else
+ virtual D3D12_RESOURCE_DESC1 *STDMETHODCALLTYPE GetDesc1(
+ D3D12_RESOURCE_DESC1 * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Resource2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Resource2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Resource2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Resource2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Resource2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Resource2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Resource2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Resource2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Resource2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Map)
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D12Resource2 * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pReadRange,
+ _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D12Resource2 * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource2 * This);
+
+#else
+ D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Resource2 * This,
+ D3D12_RESOURCE_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
+ D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
+ ID3D12Resource2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
+ HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
+ ID3D12Resource2 * This,
+ UINT DstSubresource,
+ _In_opt_ const D3D12_BOX *pDstBox,
+ _In_ const void *pSrcData,
+ UINT SrcRowPitch,
+ UINT SrcDepthPitch);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
+ HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
+ ID3D12Resource2 * This,
+ _Out_ void *pDstData,
+ UINT DstRowPitch,
+ UINT DstDepthPitch,
+ UINT SrcSubresource,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
+ HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
+ ID3D12Resource2 * This,
+ _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
+ _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12Resource2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
+ ID3D12Resource2 * This);
+
+#else
+ D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
+ ID3D12Resource2 * This,
+ D3D12_RESOURCE_DESC1 * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12Resource2Vtbl;
+
+ interface ID3D12Resource2
+ {
+ CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Resource2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Resource2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Resource2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
+ ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
+
+#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
+#if !defined(_WIN32)
+
+#define ID3D12Resource2_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12Resource2_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12Resource2_GetGPUVirtualAddress(This) \
+ ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
+
+#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
+
+#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
+ ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
+
+
+#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Resource2_GetDesc1(This) \
+ ( (This)->lpVtbl -> GetDesc1(This) )
+#else
+#define ID3D12Resource2_GetDesc1(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
+#define __ID3D12Heap1_INTERFACE_DEFINED__
+
+/* interface ID3D12Heap1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Heap1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
+ ID3D12Heap1 : public ID3D12Heap
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Heap1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Heap1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Heap1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Heap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Heap1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Heap1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Heap1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Heap1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12Heap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Heap1 * This);
+
+#else
+ D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12Heap1 * This,
+ D3D12_HEAP_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12Heap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12Heap1Vtbl;
+
+ interface ID3D12Heap1
+ {
+ CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Heap1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Heap1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Heap1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12Heap1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12Heap1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+
+#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
+ ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList3 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList3 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList3Vtbl;
+
+ interface ID3D12GraphicsCommandList3
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList3_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList3_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList3_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList3_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0054 */
+/* [local] */
+
+typedef
+enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
+ {
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) ,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
+ } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
+ {
+ D3D12_CLEAR_VALUE ClearValue;
+ } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
+ {
+ UINT AdditionalWidth;
+ UINT AdditionalHeight;
+ } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
+ {
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
+ union
+ {
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
+ D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
+ } ;
+ } D3D12_RENDER_PASS_BEGINNING_ACCESS;
+
+typedef
+enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
+ {
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) ,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
+ } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
+ {
+ UINT SrcSubresource;
+ UINT DstSubresource;
+ UINT DstX;
+ UINT DstY;
+ D3D12_RECT SrcRect;
+ } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
+ {
+ ID3D12Resource *pSrcResource;
+ ID3D12Resource *pDstResource;
+ UINT SubresourceCount;
+ _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
+ DXGI_FORMAT Format;
+ D3D12_RESOLVE_MODE ResolveMode;
+ BOOL PreserveResolveSource;
+ } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
+ {
+ UINT AdditionalWidth;
+ UINT AdditionalHeight;
+ } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
+ {
+ D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
+ union
+ {
+ D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
+ D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
+ } ;
+ } D3D12_RENDER_PASS_ENDING_ACCESS;
+
+typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
+ {
+ D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
+ D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
+ D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
+ } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
+
+typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
+ {
+ D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
+ D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
+ D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
+ D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
+ D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
+ } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
+
+typedef
+enum D3D12_RENDER_PASS_FLAGS
+ {
+ D3D12_RENDER_PASS_FLAG_NONE = 0,
+ D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
+ D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
+ D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
+ D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
+ D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
+ } D3D12_RENDER_PASS_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
+
+#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
+#define __ID3D12MetaCommand_INTERFACE_DEFINED__
+
+/* interface ID3D12MetaCommand */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12MetaCommand;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
+ ID3D12MetaCommand : public ID3D12Pageable
+ {
+ public:
+ virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _In_ UINT ParameterIndex) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12MetaCommandVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12MetaCommand * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12MetaCommand * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12MetaCommand * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12MetaCommand * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12MetaCommand * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12MetaCommand * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12MetaCommand * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12MetaCommand * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
+ UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
+ ID3D12MetaCommand * This,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _In_ UINT ParameterIndex);
+
+ END_INTERFACE
+ } ID3D12MetaCommandVtbl;
+
+ interface ID3D12MetaCommand
+ {
+ CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12MetaCommand_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12MetaCommand_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12MetaCommand_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
+ ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0055 */
+/* [local] */
+
+typedef struct D3D12_DISPATCH_RAYS_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ } D3D12_DISPATCH_RAYS_DESC;
+
+typedef
+enum D3D12_SET_WORK_GRAPH_FLAGS
+ {
+ D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
+ D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
+ } D3D12_SET_WORK_GRAPH_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
+typedef struct D3D12_SET_WORK_GRAPH_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ D3D12_SET_WORK_GRAPH_FLAGS Flags;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
+ } D3D12_SET_WORK_GRAPH_DESC;
+
+typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ } D3D12_SET_RAYTRACING_PIPELINE_DESC;
+
+typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ } D3D12_SET_GENERIC_PIPELINE_DESC;
+
+typedef
+enum D3D12_PROGRAM_TYPE
+ {
+ D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
+ D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
+ D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
+ } D3D12_PROGRAM_TYPE;
+
+typedef struct D3D12_SET_PROGRAM_DESC
+ {
+ D3D12_PROGRAM_TYPE Type;
+ union
+ {
+ D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
+ D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
+ D3D12_SET_WORK_GRAPH_DESC WorkGraph;
+ } ;
+ } D3D12_SET_PROGRAM_DESC;
+
+typedef
+enum D3D12_DISPATCH_MODE
+ {
+ D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
+ D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
+ D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
+ D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
+ } D3D12_DISPATCH_MODE;
+
+typedef struct D3D12_NODE_CPU_INPUT
+ {
+ UINT EntrypointIndex;
+ UINT NumRecords;
+ const void *pRecords;
+ UINT64 RecordStrideInBytes;
+ } D3D12_NODE_CPU_INPUT;
+
+typedef struct D3D12_NODE_GPU_INPUT
+ {
+ UINT EntrypointIndex;
+ UINT NumRecords;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
+ } D3D12_NODE_GPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_CPU_INPUT
+ {
+ UINT NumNodeInputs;
+ const D3D12_NODE_CPU_INPUT *pNodeInputs;
+ UINT64 NodeInputStrideInBytes;
+ } D3D12_MULTI_NODE_CPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_GPU_INPUT
+ {
+ UINT NumNodeInputs;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
+ } D3D12_MULTI_NODE_GPU_INPUT;
+
+typedef struct D3D12_DISPATCH_GRAPH_DESC
+ {
+ D3D12_DISPATCH_MODE Mode;
+ union
+ {
+ D3D12_NODE_CPU_INPUT NodeCPUInput;
+ D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
+ D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
+ D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
+ } ;
+ } D3D12_DISPATCH_GRAPH_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
+
+#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
+ ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
+ {
+ public:
+ virtual void STDMETHODCALLTYPE BeginRenderPass(
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags) = 0;
+
+ virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
+
+ virtual void STDMETHODCALLTYPE InitializeMetaCommand(
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
+
+ virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPipelineState1(
+ _In_ ID3D12StateObject *pStateObject) = 0;
+
+ virtual void STDMETHODCALLTYPE DispatchRays(
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList4 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList4 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList4Vtbl;
+
+ interface ID3D12GraphicsCommandList4
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList4_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList4_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList4_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList4_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0056 */
+/* [local] */
+
+typedef
+enum D3D12_SHADER_CACHE_MODE
+ {
+ D3D12_SHADER_CACHE_MODE_MEMORY = 0,
+ D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
+ } D3D12_SHADER_CACHE_MODE;
+
+typedef
+enum D3D12_SHADER_CACHE_FLAGS
+ {
+ D3D12_SHADER_CACHE_FLAG_NONE = 0,
+ D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
+ D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
+ } D3D12_SHADER_CACHE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
+typedef struct D3D12_SHADER_CACHE_SESSION_DESC
+ {
+ GUID Identifier;
+ D3D12_SHADER_CACHE_MODE Mode;
+ D3D12_SHADER_CACHE_FLAGS Flags;
+ UINT MaximumInMemoryCacheSizeBytes;
+ UINT MaximumInMemoryCacheEntries;
+ UINT MaximumValueFileSizeBytes;
+ UINT64 Version;
+ } D3D12_SHADER_CACHE_SESSION_DESC;
+
+typedef
+enum D3D12_BARRIER_LAYOUT
+ {
+ D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
+ D3D12_BARRIER_LAYOUT_COMMON = 0,
+ D3D12_BARRIER_LAYOUT_PRESENT = 0,
+ D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
+ D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
+ D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
+ D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
+ D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
+ D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
+ D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
+ D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
+ D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
+ D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
+ D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
+ D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
+ D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
+ D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
+ D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
+ D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
+ D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
+ } D3D12_BARRIER_LAYOUT;
+
+typedef
+enum D3D12_BARRIER_SYNC
+ {
+ D3D12_BARRIER_SYNC_NONE = 0,
+ D3D12_BARRIER_SYNC_ALL = 0x1,
+ D3D12_BARRIER_SYNC_DRAW = 0x2,
+ D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
+ D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
+ D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
+ D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
+ D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
+ D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
+ D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
+ D3D12_BARRIER_SYNC_COPY = 0x200,
+ D3D12_BARRIER_SYNC_RESOLVE = 0x400,
+ D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
+ D3D12_BARRIER_SYNC_PREDICATION = 0x800,
+ D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
+ D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
+ D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
+ D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
+ D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
+ D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
+ D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
+ D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
+ D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
+ D3D12_BARRIER_SYNC_SPLIT = 0x80000000
+ } D3D12_BARRIER_SYNC;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
+typedef
+enum D3D12_BARRIER_ACCESS
+ {
+ D3D12_BARRIER_ACCESS_COMMON = 0,
+ D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
+ D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
+ D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
+ D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
+ D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
+ D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
+ D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
+ D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
+ D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
+ D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
+ D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
+ D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
+ D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
+ D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
+ D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
+ D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
+ D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
+ D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
+ D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
+ D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
+ D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
+ D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
+ D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
+ D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
+ D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
+ } D3D12_BARRIER_ACCESS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
+typedef
+enum D3D12_BARRIER_TYPE
+ {
+ D3D12_BARRIER_TYPE_GLOBAL = 0,
+ D3D12_BARRIER_TYPE_TEXTURE = ( D3D12_BARRIER_TYPE_GLOBAL + 1 ) ,
+ D3D12_BARRIER_TYPE_BUFFER = ( D3D12_BARRIER_TYPE_TEXTURE + 1 )
+ } D3D12_BARRIER_TYPE;
+
+typedef
+enum D3D12_TEXTURE_BARRIER_FLAGS
+ {
+ D3D12_TEXTURE_BARRIER_FLAG_NONE = 0,
+ D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
+ } D3D12_TEXTURE_BARRIER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
+typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
+ {
+ UINT IndexOrFirstMipLevel;
+ UINT NumMipLevels;
+ UINT FirstArraySlice;
+ UINT NumArraySlices;
+ UINT FirstPlane;
+ UINT NumPlanes;
+ } D3D12_BARRIER_SUBRESOURCE_RANGE;
+
+typedef struct D3D12_GLOBAL_BARRIER
+ {
+ D3D12_BARRIER_SYNC SyncBefore;
+ D3D12_BARRIER_SYNC SyncAfter;
+ D3D12_BARRIER_ACCESS AccessBefore;
+ D3D12_BARRIER_ACCESS AccessAfter;
+ } D3D12_GLOBAL_BARRIER;
+
+typedef struct D3D12_TEXTURE_BARRIER
+ {
+ D3D12_BARRIER_SYNC SyncBefore;
+ D3D12_BARRIER_SYNC SyncAfter;
+ D3D12_BARRIER_ACCESS AccessBefore;
+ D3D12_BARRIER_ACCESS AccessAfter;
+ D3D12_BARRIER_LAYOUT LayoutBefore;
+ D3D12_BARRIER_LAYOUT LayoutAfter;
+ _In_ ID3D12Resource *pResource;
+ D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
+ D3D12_TEXTURE_BARRIER_FLAGS Flags;
+ } D3D12_TEXTURE_BARRIER;
+
+typedef struct D3D12_BUFFER_BARRIER
+ {
+ D3D12_BARRIER_SYNC SyncBefore;
+ D3D12_BARRIER_SYNC SyncAfter;
+ D3D12_BARRIER_ACCESS AccessBefore;
+ D3D12_BARRIER_ACCESS AccessAfter;
+ _In_ ID3D12Resource *pResource;
+ UINT64 Offset;
+ UINT64 Size;
+ } D3D12_BUFFER_BARRIER;
+
+typedef struct D3D12_BARRIER_GROUP
+ {
+ D3D12_BARRIER_TYPE Type;
+ UINT32 NumBarriers;
+ union
+ {
+ _In_reads_(NumBarriers) const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
+ _In_reads_(NumBarriers) const D3D12_TEXTURE_BARRIER *pTextureBarriers;
+ _In_reads_(NumBarriers) const D3D12_BUFFER_BARRIER *pBufferBarriers;
+ } ;
+ } D3D12_BARRIER_GROUP;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
+
+#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
+#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
+
+/* interface ID3D12ShaderCacheSession */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12ShaderCacheSession;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
+ ID3D12ShaderCacheSession : public ID3D12DeviceChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FindValue(
+ /* [annotation][in] */
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ /* [annotation][out] */
+ _Out_writes_bytes_(*pValueSize) void *pValue,
+ _Inout_ UINT *pValueSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreValue(
+ /* [annotation][in] */
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ /* [annotation][in] */
+ _In_reads_bytes_(ValueSize) const void *pValue,
+ UINT ValueSize) = 0;
+
+ virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_SHADER_CACHE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_SHADER_CACHE_SESSION_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ShaderCacheSessionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12ShaderCacheSession * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12ShaderCacheSession * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12ShaderCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12ShaderCacheSession * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12ShaderCacheSession * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12ShaderCacheSession * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12ShaderCacheSession * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12ShaderCacheSession * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
+ HRESULT ( STDMETHODCALLTYPE *FindValue )(
+ ID3D12ShaderCacheSession * This,
+ /* [annotation][in] */
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ /* [annotation][out] */
+ _Out_writes_bytes_(*pValueSize) void *pValue,
+ _Inout_ UINT *pValueSize);
+
+ DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
+ HRESULT ( STDMETHODCALLTYPE *StoreValue )(
+ ID3D12ShaderCacheSession * This,
+ /* [annotation][in] */
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ /* [annotation][in] */
+ _In_reads_bytes_(ValueSize) const void *pValue,
+ UINT ValueSize);
+
+ DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
+ void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
+ ID3D12ShaderCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
+#if !defined(_WIN32)
+ D3D12_SHADER_CACHE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ShaderCacheSession * This);
+
+#else
+ D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12ShaderCacheSession * This,
+ D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12ShaderCacheSessionVtbl;
+
+ interface ID3D12ShaderCacheSession
+ {
+ CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12ShaderCacheSession_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12ShaderCacheSession_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12ShaderCacheSession_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
+ ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
+
+#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
+ ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
+
+#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
+ ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
+#if !defined(_WIN32)
+
+#define ID3D12ShaderCacheSession_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0057 */
+/* [local] */
+
+typedef
+enum D3D12_SHADER_CACHE_KIND_FLAGS
+ {
+ D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
+ D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
+ D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
+ D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
+ } D3D12_SHADER_CACHE_KIND_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
+typedef
+enum D3D12_SHADER_CACHE_CONTROL_FLAGS
+ {
+ D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
+ D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
+ D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
+ } D3D12_SHADER_CACHE_CONTROL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
+
+#ifndef __ID3D12Device9_INTERFACE_DEFINED__
+#define __ID3D12Device9_INTERFACE_DEFINED__
+
+/* interface ID3D12Device9 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device9;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
+ ID3D12Device9 : public ID3D12Device8
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device9Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device9 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device9 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device9 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device9 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device9 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device9 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device9 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device9 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device9 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device9 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device9 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device9 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device9 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device9 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device9 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device9 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device9 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device9 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device9 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device9 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device9 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device9 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device9 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device9 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device9 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device9 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device9 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device9 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device9 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device9 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device9 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device9 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device9 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device9 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device9 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device9 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device9 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device9 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device9 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device9 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device9 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device9 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device9 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device9 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device9 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device9 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device9 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device9 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device9 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device9 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device9 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device9 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device9 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device9 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device9 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device9 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device9 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ END_INTERFACE
+ } ID3D12Device9Vtbl;
+
+ interface ID3D12Device9
+ {
+ CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device9_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device9_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device9_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device9_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device9_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device9_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device9_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device9_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device9_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device9_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device9_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device9_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device10_INTERFACE_DEFINED__
+#define __ID3D12Device10_INTERFACE_DEFINED__
+
+/* interface ID3D12Device10 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device10;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
+ ID3D12Device10 : public ID3D12Device9
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device10Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device10 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device10 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device10 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device10 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device10 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device10 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device10 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device10 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device10 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device10 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device10 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device10 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device10 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device10 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device10 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device10 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device10 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device10 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device10 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device10 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device10 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device10 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device10 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device10 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device10 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device10 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device10 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device10 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device10 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device10 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device10 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device10 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device10 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device10 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device10 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device10 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device10 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device10 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device10 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device10 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device10 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device10 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device10 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device10 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device10 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device10 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device10 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device10 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device10 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device10 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device10 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device10 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device10 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device10 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device10 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device10 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device10 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device10 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ END_INTERFACE
+ } ID3D12Device10Vtbl;
+
+ interface ID3D12Device10
+ {
+ CONST_VTBL struct ID3D12Device10Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device10_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device10_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device10_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device10_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device10_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device10_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device10_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device10_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device10_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device10_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device10_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device10_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device10_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device10_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device10_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device10_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device10_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device10_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device10_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device10_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device11_INTERFACE_DEFINED__
+#define __ID3D12Device11_INTERFACE_DEFINED__
+
+/* interface ID3D12Device11 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device11;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5405c344-d457-444e-b4dd-2366e45aee39")
+ ID3D12Device11 : public ID3D12Device10
+ {
+ public:
+ virtual void STDMETHODCALLTYPE CreateSampler2(
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device11Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device11 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device11 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device11 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device11 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device11 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device11 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device11 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device11 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device11 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device11 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device11 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device11 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device11 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device11 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device11 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device11 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device11 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device11 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device11 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device11 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device11 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device11 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device11 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device11 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device11 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device11 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device11 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device11 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device11 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device11 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device11 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device11 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device11 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device11 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device11 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device11 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device11 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device11 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device11 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device11 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device11 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device11 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device11 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device11 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device11 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device11 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device11 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device11 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device11 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device11 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device11 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device11 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device11 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device11 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device11 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device11 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device11 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device11 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device11 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device11 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device11 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
+ void ( STDMETHODCALLTYPE *CreateSampler2 )(
+ ID3D12Device11 * This,
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ END_INTERFACE
+ } ID3D12Device11Vtbl;
+
+ interface ID3D12Device11
+ {
+ CONST_VTBL struct ID3D12Device11Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device11_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device11_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device11_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device11_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device11_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device11_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device11_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device11_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device11_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device11_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device11_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device11_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device11_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device11_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device11_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device11_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device11_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device11_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device11_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+
+#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device11_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device12_INTERFACE_DEFINED__
+#define __ID3D12Device12_INTERFACE_DEFINED__
+
+/* interface ID3D12Device12 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device12;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5af5c532-4c91-4cd0-b541-15a405395fc5")
+ ID3D12Device12 : public ID3D12Device11
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo3(
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#else
+ virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo3(
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device12Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device12 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device12 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device12 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device12 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device12 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device12 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device12 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device12 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device12 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device12 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device12 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device12 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device12 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device12 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device12 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device12 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device12 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device12 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device12 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device12 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device12 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device12 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device12 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device12 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device12 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device12 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device12 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device12 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device12 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device12 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device12 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device12 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device12 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device12 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device12 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device12 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device12 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device12 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device12 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device12 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device12 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device12 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device12 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device12 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device12 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device12 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device12 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device12 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device12 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device12 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device12 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device12 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device12 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device12 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device12 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device12 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device12 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device12 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device12 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device12 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device12 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
+ void ( STDMETHODCALLTYPE *CreateSampler2 )(
+ ID3D12Device12 * This,
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device12 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device12 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12Device12Vtbl;
+
+ interface ID3D12Device12
+ {
+ CONST_VTBL struct ID3D12Device12Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device12_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device12_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device12_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device12_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device12_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device12_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device12_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device12_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device12_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device12_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device12_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device12_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device12_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device12_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+
+#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device12_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device12_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device12_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device13_INTERFACE_DEFINED__
+#define __ID3D12Device13_INTERFACE_DEFINED__
+
+/* interface ID3D12Device13 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device13;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("14eecffc-4df8-40f7-a118-5c816f45695e")
+ ID3D12Device13 : public ID3D12Device12
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress1(
+ _In_ const void *pAddress,
+ SIZE_T size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device13Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device13 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device13 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device13 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device13 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device13 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device13 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device13 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device13 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device13 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device13 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device13 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device13 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device13 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device13 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device13 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device13 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device13 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device13 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device13 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device13 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device13 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device13 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device13 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device13 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device13 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device13 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device13 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device13 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device13 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device13 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device13 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device13 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device13 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device13 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device13 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device13 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device13 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device13 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device13 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device13 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device13 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device13 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device13 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device13 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device13 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device13 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device13 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device13 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device13 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device13 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device13 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device13 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device13 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device13 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device13 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device13 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device13 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device13 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device13 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device13 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device13 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
+ void ( STDMETHODCALLTYPE *CreateSampler2 )(
+ ID3D12Device13 * This,
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device13 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device13 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
+ ID3D12Device13 * This,
+ _In_ const void *pAddress,
+ SIZE_T size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ END_INTERFACE
+ } ID3D12Device13Vtbl;
+
+ interface ID3D12Device13
+ {
+ CONST_VTBL struct ID3D12Device13Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device13_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device13_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device13_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device13_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device13_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device13_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device13_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device13_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device13_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device13_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device13_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device13_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device13_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device13_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+
+#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device13_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device13_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Device14_INTERFACE_DEFINED__
+#define __ID3D12Device14_INTERFACE_DEFINED__
+
+/* interface ID3D12Device14 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device14;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
+ ID3D12Device14 : public ID3D12Device13
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
+ _In_ SIZE_T blobLengthInBytes,
+ _In_opt_ LPCWSTR subobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device14Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device14 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device14 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device14 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device14 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device14 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device14 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device14 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device14 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device14 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device14 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device14 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device14 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device14 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device14 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device14 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device14 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device14 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device14 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device14 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device14 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device14 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device14 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device14 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device14 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device14 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device14 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device14 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device14 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device14 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device14 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device14 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device14 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
+ void ( STDMETHODCALLTYPE *CreateSampler2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
+ ID3D12Device14 * This,
+ _In_ const void *pAddress,
+ SIZE_T size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
+ _In_ SIZE_T blobLengthInBytes,
+ _In_opt_ LPCWSTR subobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12Device14Vtbl;
+
+ interface ID3D12Device14
+ {
+ CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device14_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device14_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device14_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device14_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device14_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device14_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+
+#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
+
+
+#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0063 */
+/* [local] */
+
+typedef union D3D12_VERSION_NUMBER
+ {
+ UINT64 Version;
+ UINT16 VersionParts[ 4 ];
+ } D3D12_VERSION_NUMBER;
+
+typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
+ {
+ WCHAR szAdapterFamily[ 128 ];
+ UINT64 MinimumABISupportVersion;
+ UINT64 MaximumABISupportVersion;
+ D3D12_VERSION_NUMBER CompilerVersion;
+ D3D12_VERSION_NUMBER ApplicationProfileVersion;
+ } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
+
+typedef void ( __stdcall *D3D12PipelineStateFunc )(
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12StateObjectFunc )(
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_bytes_(ParentKeySize) const void *pParentKey,
+ UINT ParentKeySize,
+ _Inout_opt_ void *pContext);
+
+typedef struct D3D12_APPLICATION_DESC
+ {
+ LPCWSTR pExeFilename;
+ LPCWSTR pName;
+ D3D12_VERSION_NUMBER Version;
+ LPCWSTR pEngineName;
+ D3D12_VERSION_NUMBER EngineVersion;
+ } D3D12_APPLICATION_DESC;
+
+typedef void ( __stdcall *D3D12ApplicationDescFunc )(
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Inout_opt_ void *pContext);
+
+typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
+#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectDatabase */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectDatabase;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
+ ID3D12StateObjectDatabase : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
+ _In_ D3D12ApplicationDescFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ _In_ D3D12PipelineStateFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
+ UINT StateObjectToGrowFromKeySize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ D3D12StateObjectFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ _Out_ UINT *pVersion) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectDatabaseVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectDatabase * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectDatabase * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectDatabase * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
+ HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_ D3D12ApplicationDescFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
+ HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
+ HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ _In_ D3D12PipelineStateFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
+ HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
+ UINT StateObjectToGrowFromKeySize);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
+ HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ D3D12StateObjectFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
+ HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ _Out_ UINT *pVersion);
+
+ END_INTERFACE
+ } ID3D12StateObjectDatabaseVtbl;
+
+ interface ID3D12StateObjectDatabase
+ {
+ CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectDatabase_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectDatabase_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
+ ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
+
+#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
+ ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
+
+#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
+ ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
+
+#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
+ ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
+#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
+
+/* interface ID3D12VirtualizationGuestDevice */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VirtualizationGuestDevice;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
+ ID3D12VirtualizationGuestDevice : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
+ _In_ ID3D12DeviceChild *pObject,
+ _Out_ HANDLE *pHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
+ _In_ ID3D12Fence *pFence,
+ UINT64 FenceValue,
+ _Out_ int *pFenceFd) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VirtualizationGuestDeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VirtualizationGuestDevice * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VirtualizationGuestDevice * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VirtualizationGuestDevice * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, ShareWithHost)
+ HRESULT ( STDMETHODCALLTYPE *ShareWithHost )(
+ ID3D12VirtualizationGuestDevice * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, CreateFenceFd)
+ HRESULT ( STDMETHODCALLTYPE *CreateFenceFd )(
+ ID3D12VirtualizationGuestDevice * This,
+ _In_ ID3D12Fence *pFence,
+ UINT64 FenceValue,
+ _Out_ int *pFenceFd);
+
+ END_INTERFACE
+ } ID3D12VirtualizationGuestDeviceVtbl;
+
+ interface ID3D12VirtualizationGuestDevice
+ {
+ CONST_VTBL struct ID3D12VirtualizationGuestDeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VirtualizationGuestDevice_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VirtualizationGuestDevice_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle) \
+ ( (This)->lpVtbl -> ShareWithHost(This,pObject,pHandle) )
+
+#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd) \
+ ( (This)->lpVtbl -> CreateFenceFd(This,pFence,FenceValue,pFenceFd) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Tools_INTERFACE_DEFINED__
+#define __ID3D12Tools_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Tools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
+ ID3D12Tools : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
+ BOOL bEnable) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ToolsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Tools * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Tools * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Tools * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+ void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
+ ID3D12Tools * This,
+ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+ BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
+ ID3D12Tools * This);
+
+ END_INTERFACE
+ } ID3D12ToolsVtbl;
+
+ interface ID3D12Tools
+ {
+ CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Tools_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Tools_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
+ ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
+
+#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
+ ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
+#define __ID3D12Tools1_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Tools1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
+ ID3D12Tools1 : public ID3D12Tools
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Tools1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Tools1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+ void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
+ ID3D12Tools1 * This,
+ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+ BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
+ HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
+ ID3D12Tools1 * This,
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
+ void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
+ ID3D12Tools1 * This);
+
+ END_INTERFACE
+ } ID3D12Tools1Vtbl;
+
+ interface ID3D12Tools1
+ {
+ CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Tools1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Tools1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
+ ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
+
+#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
+ ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
+
+
+#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
+ ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
+
+#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
+ ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
+#define __ID3D12Tools2_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Tools2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
+ ID3D12Tools2 : public ID3D12Tools1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
+ _In_ IUnknown *pAdapter,
+ _In_opt_ ID3DBlob *pBlob) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Tools2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Tools2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+ void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
+ ID3D12Tools2 * This,
+ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+ BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
+ HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
+ ID3D12Tools2 * This,
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
+ void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
+ HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
+ ID3D12Tools2 * This,
+ _In_ IUnknown *pAdapter,
+ _In_opt_ ID3DBlob *pBlob);
+
+ END_INTERFACE
+ } ID3D12Tools2Vtbl;
+
+ interface ID3D12Tools2
+ {
+ CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Tools2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Tools2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
+ ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
+
+#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
+ ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
+
+
+#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
+ ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
+
+#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
+ ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
+
+
+#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
+ ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
+#define __ID3D12PageableTools_INTERFACE_DEFINED__
+
+/* interface ID3D12PageableTools */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PageableTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
+ ID3D12PageableTools : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAllocation(
+ _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PageableToolsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PageableTools * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PageableTools * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PageableTools * This);
+
+ DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
+ HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
+ ID3D12PageableTools * This,
+ _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
+
+ END_INTERFACE
+ } ID3D12PageableToolsVtbl;
+
+ interface ID3D12PageableTools
+ {
+ CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PageableTools_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PageableTools_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
+ ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
+#define __ID3D12DeviceTools_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceTools */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
+ ID3D12DeviceTools : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceToolsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceTools * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceTools * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceTools * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
+ void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
+ ID3D12DeviceTools * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+
+ END_INTERFACE
+ } ID3D12DeviceToolsVtbl;
+
+ interface ID3D12DeviceTools
+ {
+ CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceTools_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceTools_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
+ ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0070 */
+/* [local] */
+
+typedef
+enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
+ {
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
+ } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
+
+#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
+#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceTools1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceTools1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
+ ID3D12DeviceTools1 : public ID3D12DeviceTools
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
+ _COM_Outptr_ ID3DBlob **ppBlob) = 0;
+
+ virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceTools1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceTools1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceTools1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceTools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
+ void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
+ ID3D12DeviceTools1 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
+ ID3D12DeviceTools1 * This,
+ _COM_Outptr_ ID3DBlob **ppBlob);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
+ ID3D12DeviceTools1 * This);
+
+ END_INTERFACE
+ } ID3D12DeviceTools1Vtbl;
+
+ interface ID3D12DeviceTools1
+ {
+ CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceTools1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceTools1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
+ ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
+
+
+#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
+ ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
+
+#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
+ ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0071 */
+/* [local] */
+
+typedef struct D3D12_SUBRESOURCE_DATA
+ {
+ const void *pData;
+ LONG_PTR RowPitch;
+ LONG_PTR SlicePitch;
+ } D3D12_SUBRESOURCE_DATA;
+
+typedef struct D3D12_MEMCPY_DEST
+ {
+ void *pData;
+ SIZE_T RowPitch;
+ SIZE_T SlicePitch;
+ } D3D12_MEMCPY_DEST;
+
+#if !defined( D3D12_IGNORE_SDK_LAYERS )
+#include "d3d12sdklayers.h"
+#endif
+
+///////////////////////////////////////////////////////////////////////////
+// D3D12CreateDevice
+// ------------------
+//
+// pAdapter
+// If NULL, D3D12CreateDevice will choose the primary adapter.
+// If non-NULL, D3D12CreateDevice will use the provided adapter.
+// MinimumFeatureLevel
+// The minimum feature level required for successful device creation.
+// riid
+// The interface IID of the device to be returned. Expected: ID3D12Device.
+// ppDevice
+// Pointer to returned interface. May be NULL.
+//
+// Return Values
+// Any of those documented for
+// CreateDXGIFactory1
+// IDXGIFactory::EnumAdapters
+// D3D12CreateDevice
+//
+///////////////////////////////////////////////////////////////////////////
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
+ D3D_FEATURE_LEVEL,
+ _In_ REFIID, _COM_Outptr_opt_ void** );
+
+HRESULT WINAPI D3D12CreateDevice(
+ _In_opt_ IUnknown* pAdapter,
+ D3D_FEATURE_LEVEL MinimumFeatureLevel,
+ _In_ REFIID riid, // Expected: ID3D12Device
+ _COM_Outptr_opt_ void** ppDevice );
+
+
+typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
+
+HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
+
+// --------------------------------------------------------------------------------------------------------------------------------
+// D3D12EnableExperimentalFeatures
+//
+// Pass in a list of feature GUIDs to be enabled together.
+//
+// If a particular feature requires some configuration information on enablement, it will have
+// a configuration struct that can be passed alongside the GUID.
+//
+// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
+// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
+// for manipulating the feature. This allows for control that might not cleanly be expressed by just
+// the configuration struct that D3D12EnableExperimentalFeatures provides.
+//
+// If this method is called and a change to existing feature enablement is made,
+// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
+// singleton device for a process. Removing the devices when configuration changes prevents
+// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
+//
+// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
+// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
+// in are known to be incompatible with each other, or other errors.
+// Returns S_OK otherwise.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+HRESULT WINAPI D3D12EnableExperimentalFeatures(
+ UINT NumFeatures,
+ _In_count_(NumFeatures) const IID* pIIDs,
+ _In_opt_count_(NumFeatures) void* pConfigurationStructs,
+ _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
+
+// --------------------------------------------------------------------------------------------------------------------------------
+// Experimental Feature: D3D12ExperimentalShaderModels
+//
+// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
+// meaning shader models that haven't been finalized for use in retail.
+//
+// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
+ 0x76f5573e,
+ 0xf13a,
+ 0x40f5,
+ { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
+};
+// --------------------------------------------------------------------------------------------------------------------------------
+// Experimental Feature: D3D12TiledResourceTier4
+//
+// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
+// meaning texture tile data-inheritance is allowed.
+//
+// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
+ 0xc9c4725f,
+ 0xa81a,
+ 0x4f56,
+ { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
+};
+// --------------------------------------------------------------------------------------------------------------------------------
+// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
+//
+// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
+// driver support is still required for this feature.
+//
+// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
+ 0x45dc51f3,
+ 0x767f,
+ 0x4588,
+ { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
+};
+// --------------------------------------------------------------------------------------------------------------------------------
+// D3D12GetInterface
+//
+// Retrieve Global D3D12 Interface.
+//
+
+DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
+DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
+DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
+DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
+DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
+DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
+DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
+
+typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
+
+HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
+
+#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
+#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
+
+/* interface ID3D12SDKConfiguration */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12SDKConfiguration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
+ ID3D12SDKConfiguration : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
+ UINT SDKVersion,
+ _In_z_ LPCSTR SDKPath) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12SDKConfigurationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12SDKConfiguration * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12SDKConfiguration * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12SDKConfiguration * This);
+
+ DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
+ HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
+ ID3D12SDKConfiguration * This,
+ UINT SDKVersion,
+ _In_z_ LPCSTR SDKPath);
+
+ END_INTERFACE
+ } ID3D12SDKConfigurationVtbl;
+
+ interface ID3D12SDKConfiguration
+ {
+ CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12SDKConfiguration_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12SDKConfiguration_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
+ ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
+#define __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
+
+/* interface ID3D12SDKConfiguration1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12SDKConfiguration1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8aaf9303-ad25-48b9-9a57-d9c37e009d9f")
+ ID3D12SDKConfiguration1 : public ID3D12SDKConfiguration
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateDeviceFactory(
+ UINT SDKVersion,
+ _In_ LPCSTR SDKPath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvFactory) = 0;
+
+ virtual void STDMETHODCALLTYPE FreeUnusedSDKs( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12SDKConfiguration1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12SDKConfiguration1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12SDKConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12SDKConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
+ HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
+ ID3D12SDKConfiguration1 * This,
+ UINT SDKVersion,
+ _In_z_ LPCSTR SDKPath);
+
+ DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, CreateDeviceFactory)
+ HRESULT ( STDMETHODCALLTYPE *CreateDeviceFactory )(
+ ID3D12SDKConfiguration1 * This,
+ UINT SDKVersion,
+ _In_ LPCSTR SDKPath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvFactory);
+
+ DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, FreeUnusedSDKs)
+ void ( STDMETHODCALLTYPE *FreeUnusedSDKs )(
+ ID3D12SDKConfiguration1 * This);
+
+ END_INTERFACE
+ } ID3D12SDKConfiguration1Vtbl;
+
+ interface ID3D12SDKConfiguration1
+ {
+ CONST_VTBL struct ID3D12SDKConfiguration1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12SDKConfiguration1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12SDKConfiguration1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath) \
+ ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
+
+
+#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) \
+ ( (This)->lpVtbl -> CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) )
+
+#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This) \
+ ( (This)->lpVtbl -> FreeUnusedSDKs(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0073 */
+/* [local] */
+
+typedef
+enum D3D12_DEVICE_FACTORY_FLAGS
+ {
+ D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
+ D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
+ D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
+ D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
+ } D3D12_DEVICE_FACTORY_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
+
+#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
+#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("61f307d3-d34e-4e7c-8374-3ba4de23cccb")
+ ID3D12DeviceFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InitializeFromGlobalState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ApplyToGlobalState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFlags(
+ D3D12_DEVICE_FACTORY_FLAGS flags) = 0;
+
+ virtual D3D12_DEVICE_FACTORY_FLAGS STDMETHODCALLTYPE GetFlags( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetConfigurationInterface(
+ REFCLSID clsid,
+ REFIID iid,
+ _COM_Outptr_ void **ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableExperimentalFeatures(
+ UINT NumFeatures,
+ _In_reads_(NumFeatures) const IID *pIIDs,
+ _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
+ _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateDevice(
+ _In_opt_ IUnknown *adapter,
+ D3D_FEATURE_LEVEL FeatureLevel,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, InitializeFromGlobalState)
+ HRESULT ( STDMETHODCALLTYPE *InitializeFromGlobalState )(
+ ID3D12DeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, ApplyToGlobalState)
+ HRESULT ( STDMETHODCALLTYPE *ApplyToGlobalState )(
+ ID3D12DeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, SetFlags)
+ HRESULT ( STDMETHODCALLTYPE *SetFlags )(
+ ID3D12DeviceFactory * This,
+ D3D12_DEVICE_FACTORY_FLAGS flags);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetFlags)
+ D3D12_DEVICE_FACTORY_FLAGS ( STDMETHODCALLTYPE *GetFlags )(
+ ID3D12DeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetConfigurationInterface)
+ HRESULT ( STDMETHODCALLTYPE *GetConfigurationInterface )(
+ ID3D12DeviceFactory * This,
+ REFCLSID clsid,
+ REFIID iid,
+ _COM_Outptr_ void **ppv);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, EnableExperimentalFeatures)
+ HRESULT ( STDMETHODCALLTYPE *EnableExperimentalFeatures )(
+ ID3D12DeviceFactory * This,
+ UINT NumFeatures,
+ _In_reads_(NumFeatures) const IID *pIIDs,
+ _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
+ _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceFactory, CreateDevice)
+ HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
+ ID3D12DeviceFactory * This,
+ _In_opt_ IUnknown *adapter,
+ D3D_FEATURE_LEVEL FeatureLevel,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ END_INTERFACE
+ } ID3D12DeviceFactoryVtbl;
+
+ interface ID3D12DeviceFactory
+ {
+ CONST_VTBL struct ID3D12DeviceFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceFactory_InitializeFromGlobalState(This) \
+ ( (This)->lpVtbl -> InitializeFromGlobalState(This) )
+
+#define ID3D12DeviceFactory_ApplyToGlobalState(This) \
+ ( (This)->lpVtbl -> ApplyToGlobalState(This) )
+
+#define ID3D12DeviceFactory_SetFlags(This,flags) \
+ ( (This)->lpVtbl -> SetFlags(This,flags) )
+
+#define ID3D12DeviceFactory_GetFlags(This) \
+ ( (This)->lpVtbl -> GetFlags(This) )
+
+#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv) \
+ ( (This)->lpVtbl -> GetConfigurationInterface(This,clsid,iid,ppv) )
+
+#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) \
+ ( (This)->lpVtbl -> EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) )
+
+#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) \
+ ( (This)->lpVtbl -> CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0074 */
+/* [local] */
+
+typedef
+enum D3D12_DEVICE_FLAGS
+ {
+ D3D12_DEVICE_FLAG_NONE = 0,
+ D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
+ D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
+ D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
+ D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
+ D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
+ D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
+ D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
+ D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
+ D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
+ D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
+ D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
+ } D3D12_DEVICE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
+typedef struct D3D12_DEVICE_CONFIGURATION_DESC
+ {
+ D3D12_DEVICE_FLAGS Flags;
+ UINT GpuBasedValidationFlags;
+ UINT SDKVersion;
+ UINT NumEnabledExperimentalFeatures;
+ } D3D12_DEVICE_CONFIGURATION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
+
+#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
+#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceConfiguration */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceConfiguration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("78dbf87b-f766-422b-a61c-c8c446bdb9ad")
+ ID3D12DeviceConfiguration : public IUnknown
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_DEVICE_CONFIGURATION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_DEVICE_CONFIGURATION_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_DEVICE_CONFIGURATION_DESC * RetVal) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE GetEnabledExperimentalFeatures(
+ _Out_writes_(NumGuids) GUID *pGuids,
+ UINT NumGuids) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SerializeVersionedRootSignature(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
+ _COM_Outptr_ ID3DBlob **ppResult,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializer(
+ _In_reads_bytes_(Size) const void *pBlob,
+ SIZE_T Size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceConfigurationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceConfiguration * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceConfiguration * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceConfiguration * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
+#if !defined(_WIN32)
+ D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration * This);
+
+#else
+ D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration * This,
+ D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
+ HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
+ ID3D12DeviceConfiguration * This,
+ _Out_writes_(NumGuids) GUID *pGuids,
+ UINT NumGuids);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
+ ID3D12DeviceConfiguration * This,
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
+ _COM_Outptr_ ID3DBlob **ppResult,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
+ HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
+ ID3D12DeviceConfiguration * This,
+ _In_reads_bytes_(Size) const void *pBlob,
+ SIZE_T Size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer);
+
+ END_INTERFACE
+ } ID3D12DeviceConfigurationVtbl;
+
+ interface ID3D12DeviceConfiguration
+ {
+ CONST_VTBL struct ID3D12DeviceConfigurationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceConfiguration_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceConfiguration_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12DeviceConfiguration_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12DeviceConfiguration_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
+ ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
+
+#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
+ ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
+
+#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
+ ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
+#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceConfiguration1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
+ ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+ _In_reads_bytes_(Size) const void *pLibraryBlob,
+ SIZE_T Size,
+ LPCWSTR RootSignatureSubobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceConfiguration1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceConfiguration1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
+#if !defined(_WIN32)
+ D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration1 * This);
+
+#else
+ D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration1 * This,
+ D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
+ HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
+ ID3D12DeviceConfiguration1 * This,
+ _Out_writes_(NumGuids) GUID *pGuids,
+ UINT NumGuids);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
+ _COM_Outptr_ ID3DBlob **ppResult,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
+ HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_reads_bytes_(Size) const void *pBlob,
+ SIZE_T Size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_reads_bytes_(Size) const void *pLibraryBlob,
+ SIZE_T Size,
+ LPCWSTR RootSignatureSubobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer);
+
+ END_INTERFACE
+ } ID3D12DeviceConfiguration1Vtbl;
+
+ interface ID3D12DeviceConfiguration1
+ {
+ CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceConfiguration1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceConfiguration1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12DeviceConfiguration1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
+ ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
+
+#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
+ ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
+
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
+ ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
+
+
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
+ ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0076 */
+/* [local] */
+
+typedef
+enum D3D12_STATE_OBJECT_DATABASE_FLAGS
+ {
+ D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
+ D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
+ } D3D12_STATE_OBJECT_DATABASE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
+#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectDatabaseFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
+ ID3D12StateObjectDatabaseFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
+ LPCWSTR pDatabaseFile,
+ D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectDatabaseFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectDatabaseFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectDatabaseFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectDatabaseFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
+ ID3D12StateObjectDatabaseFactory * This,
+ LPCWSTR pDatabaseFile,
+ D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppvStateObjectDatabase);
+
+ END_INTERFACE
+ } ID3D12StateObjectDatabaseFactoryVtbl;
+
+ interface ID3D12StateObjectDatabaseFactory
+ {
+ CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectDatabaseFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
+ ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0077 */
+/* [local] */
+
+typedef
+enum D3D12_AXIS_SHADING_RATE
+ {
+ D3D12_AXIS_SHADING_RATE_1X = 0,
+ D3D12_AXIS_SHADING_RATE_2X = 0x1,
+ D3D12_AXIS_SHADING_RATE_4X = 0x2
+ } D3D12_AXIS_SHADING_RATE;
+
+#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
+#define D3D12_SHADING_RATE_VALID_MASK 3
+#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
+#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
+#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
+typedef
+enum D3D12_SHADING_RATE
+ {
+ D3D12_SHADING_RATE_1X1 = 0,
+ D3D12_SHADING_RATE_1X2 = 0x1,
+ D3D12_SHADING_RATE_2X1 = 0x4,
+ D3D12_SHADING_RATE_2X2 = 0x5,
+ D3D12_SHADING_RATE_2X4 = 0x6,
+ D3D12_SHADING_RATE_4X2 = 0x9,
+ D3D12_SHADING_RATE_4X4 = 0xa
+ } D3D12_SHADING_RATE;
+
+typedef
+enum D3D12_SHADING_RATE_COMBINER
+ {
+ D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
+ D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
+ D3D12_SHADING_RATE_COMBINER_MIN = 2,
+ D3D12_SHADING_RATE_COMBINER_MAX = 3,
+ D3D12_SHADING_RATE_COMBINER_SUM = 4
+ } D3D12_SHADING_RATE_COMBINER;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
+
+#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList5 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
+ ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
+ {
+ public:
+ virtual void STDMETHODCALLTYPE RSSetShadingRate(
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
+ _In_opt_ ID3D12Resource *shadingRateImage) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList5 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList5 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList5 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList5 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList5 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList5 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList5Vtbl;
+
+ interface ID3D12GraphicsCommandList5
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList5_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList5_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList5_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList5_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList5_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList5_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0078 */
+/* [local] */
+
+typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
+ {
+ UINT ThreadGroupCountX;
+ UINT ThreadGroupCountY;
+ UINT ThreadGroupCountZ;
+ } D3D12_DISPATCH_MESH_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
+
+#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList6 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
+ ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
+ {
+ public:
+ virtual void STDMETHODCALLTYPE DispatchMesh(
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList6 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList6 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList6 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList6 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList6 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList6 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList6Vtbl;
+
+ interface ID3D12GraphicsCommandList6
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList6_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList6_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList6_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList6_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList6_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList6_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList7 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList7;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
+ ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Barrier(
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList7 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList7 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList7 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList7 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList7 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList7 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList7 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12GraphicsCommandList7 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList7Vtbl;
+
+ interface ID3D12GraphicsCommandList7
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList7Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList7_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList7_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList7_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList7_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList7_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList7_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList7_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+
+#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList8 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList8;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ee936ef9-599d-4d28-938e-23c4ad05ce51")
+ ID3D12GraphicsCommandList8 : public ID3D12GraphicsCommandList7
+ {
+ public:
+ virtual void STDMETHODCALLTYPE OMSetFrontAndBackStencilRef(
+ _In_ UINT FrontStencilRef,
+ _In_ UINT BackStencilRef) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList8 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList8 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList8 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList8 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList8 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList8 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12GraphicsCommandList8 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
+ ID3D12GraphicsCommandList8 * This,
+ _In_ UINT FrontStencilRef,
+ _In_ UINT BackStencilRef);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList8Vtbl;
+
+ interface ID3D12GraphicsCommandList8
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList8Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList8_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList8_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList8_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList8_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList8_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList8_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList8_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+
+#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
+ ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList9 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1")
+ ID3D12GraphicsCommandList9 : public ID3D12GraphicsCommandList8
+ {
+ public:
+ virtual void STDMETHODCALLTYPE RSSetDepthBias(
+ _In_ FLOAT DepthBias,
+ _In_ FLOAT DepthBiasClamp,
+ _In_ FLOAT SlopeScaledDepthBias) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetIndexBufferStripCutValue(
+ _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList9Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList9 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList9 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList9 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList9 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList9 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList9 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12GraphicsCommandList9 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ UINT FrontStencilRef,
+ _In_ UINT BackStencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
+ void ( STDMETHODCALLTYPE *RSSetDepthBias )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ FLOAT DepthBias,
+ _In_ FLOAT DepthBiasClamp,
+ _In_ FLOAT SlopeScaledDepthBias);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
+ void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
+ ID3D12GraphicsCommandList9 * This,
+ _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList9Vtbl;
+
+ interface ID3D12GraphicsCommandList9
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList9Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList9_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList9_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList9_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList9_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList9_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList9_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList9_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+
+#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
+ ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
+
+
+#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
+ ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
+
+#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
+ ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList10 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
+ ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetProgram(
+ _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE DispatchGraph(
+ _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList10Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList10 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList10 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT FrontStencilRef,
+ _In_ UINT BackStencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
+ void ( STDMETHODCALLTYPE *RSSetDepthBias )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ FLOAT DepthBias,
+ _In_ FLOAT DepthBiasClamp,
+ _In_ FLOAT SlopeScaledDepthBias);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
+ void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
+ void ( STDMETHODCALLTYPE *SetProgram )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
+ void ( STDMETHODCALLTYPE *DispatchGraph )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList10Vtbl;
+
+ interface ID3D12GraphicsCommandList10
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList10_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList10_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList10_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList10_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList10_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList10_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+
+#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
+ ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
+
+
+#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
+ ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
+
+#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
+ ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
+
+
+#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
+ ( (This)->lpVtbl -> SetProgram(This,pDesc) )
+
+#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12DSRDeviceFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
+ ID3D12DSRDeviceFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
+ ID3D12Device *pD3D12Device,
+ UINT NodeMask,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDSRDevice) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DSRDeviceFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DSRDeviceFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DSRDeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DSRDeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
+ HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
+ ID3D12DSRDeviceFactory * This,
+ ID3D12Device *pD3D12Device,
+ UINT NodeMask,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDSRDevice);
+
+ END_INTERFACE
+ } ID3D12DSRDeviceFactoryVtbl;
+
+ interface ID3D12DSRDeviceFactory
+ {
+ CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DSRDeviceFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DSRDeviceFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
+ ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
+#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
+
+/* interface ID3D12GBVDiagnostics */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GBVDiagnostics;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
+ ID3D12GBVDiagnostics : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
+ _In_ ID3D12Resource *pResource,
+ _Out_writes_bytes_(DataSize) int *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _Out_ int *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
+ _In_ ID3D12Resource *pResource,
+ _Out_ int *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_opt_ UINT32 *pResourceHash,
+ _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
+
+ virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GBVDiagnosticsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GBVDiagnostics * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _Out_writes_bytes_(DataSize) int *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _Out_ int *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _Out_ int *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_opt_ UINT32 *pResourceHash,
+ _In_opt_ UINT32 *pSubresourceStatesByteOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
+ void ( STDMETHODCALLTYPE *GBVReserved0 )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
+ void ( STDMETHODCALLTYPE *GBVReserved1 )(
+ ID3D12GBVDiagnostics * This);
+
+ END_INTERFACE
+ } ID3D12GBVDiagnosticsVtbl;
+
+ interface ID3D12GBVDiagnostics
+ {
+ CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GBVDiagnostics_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GBVDiagnostics_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
+ ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
+
+#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
+ ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
+
+#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
+ ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
+
+#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
+ ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
+
+#define ID3D12GBVDiagnostics_GBVReserved0(This) \
+ ( (This)->lpVtbl -> GBVReserved0(This) )
+
+#define ID3D12GBVDiagnostics_GBVReserved1(This) \
+ ( (This)->lpVtbl -> GBVReserved1(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0085 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
+DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
+DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
+DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
+DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
+DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
+DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
+DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
+DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
+DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
+DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
+DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
+DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
+DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
+DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
+DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
+DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
+DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
+DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
+DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
+DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
+DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
+DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
+DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
+DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
+DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
+DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
+DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
+DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
+DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
+DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
+DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
+DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
+DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
+DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
+DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
+DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
+DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
+DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
+DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
+DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
+DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
+DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
+DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
+DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
+DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
+DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
+DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
+DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);
+DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
+DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
+DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
+DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
+DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
+DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
+DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
+DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
+DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
+DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
+DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
+DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
+DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
+DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
+DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
+DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
+DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
+DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
+DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
+DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12compatibility.h b/Source/ThirdParty/DirectX12Agility/d3d12compatibility.h
new file mode 100644
index 000000000..ec9ff5f97
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12compatibility.h
@@ -0,0 +1,899 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12compatibility_h__
+#define __d3d12compatibility_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
+#define __ID3D12CompatibilityDevice_FWD_DEFINED__
+typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
+
+#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
+
+
+#ifndef __D3D11On12CreatorID_FWD_DEFINED__
+#define __D3D11On12CreatorID_FWD_DEFINED__
+typedef interface D3D11On12CreatorID D3D11On12CreatorID;
+
+#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
+
+
+#ifndef __D3D9On12CreatorID_FWD_DEFINED__
+#define __D3D9On12CreatorID_FWD_DEFINED__
+typedef interface D3D9On12CreatorID D3D9On12CreatorID;
+
+#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
+
+
+#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
+#define __OpenGLOn12CreatorID_FWD_DEFINED__
+typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
+
+#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
+
+
+#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
+#define __OpenCLOn12CreatorID_FWD_DEFINED__
+typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
+
+#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
+
+
+#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
+#define __VulkanOn12CreatorID_FWD_DEFINED__
+typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
+
+#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
+
+
+#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
+#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
+typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
+
+#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
+
+
+#ifndef __DirectMLPyTorchCreatorID_FWD_DEFINED__
+#define __DirectMLPyTorchCreatorID_FWD_DEFINED__
+typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
+
+#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
+
+
+#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
+#define __DirectMLWebNNCreatorID_FWD_DEFINED__
+typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
+
+#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "d3d11on12.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
+/* [local] */
+
+#include
+#pragma region Desktop Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+typedef
+enum D3D12_COMPATIBILITY_SHARED_FLAGS
+ {
+ D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
+ D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
+ D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
+ D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
+ } D3D12_COMPATIBILITY_SHARED_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
+typedef
+enum D3D12_REFLECT_SHARED_PROPERTY
+ {
+ D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
+ D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
+ D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
+ } D3D12_REFLECT_SHARED_PROPERTY;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
+#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
+
+/* interface ID3D12CompatibilityDevice */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompatibilityDevice;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
+ ID3D12CompatibilityDevice : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
+ D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+ _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
+ _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppResource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
+ _In_ const D3D12_HEAP_DESC *pHeapDesc,
+ D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
+ _In_ ID3D12Object *pHeapOrResource,
+ D3D12_REFLECT_SHARED_PROPERTY ReflectType,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompatibilityDeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompatibilityDevice * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompatibilityDevice * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompatibilityDevice * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
+ ID3D12CompatibilityDevice * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
+ D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+ _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
+ _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppResource);
+
+ DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
+ ID3D12CompatibilityDevice * This,
+ _In_ const D3D12_HEAP_DESC *pHeapDesc,
+ D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
+ HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
+ ID3D12CompatibilityDevice * This,
+ _In_ ID3D12Object *pHeapOrResource,
+ D3D12_REFLECT_SHARED_PROPERTY ReflectType,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ END_INTERFACE
+ } ID3D12CompatibilityDeviceVtbl;
+
+ interface ID3D12CompatibilityDevice
+ {
+ CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompatibilityDevice_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompatibilityDevice_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
+ ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
+
+#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
+ ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
+
+#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
+ ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
+
+
+#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
+#define __D3D11On12CreatorID_INTERFACE_DEFINED__
+
+/* interface D3D11On12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_D3D11On12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
+ D3D11On12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct D3D11On12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ D3D11On12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ D3D11On12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ D3D11On12CreatorID * This);
+
+ END_INTERFACE
+ } D3D11On12CreatorIDVtbl;
+
+ interface D3D11On12CreatorID
+ {
+ CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define D3D11On12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define D3D11On12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
+#define __D3D9On12CreatorID_INTERFACE_DEFINED__
+
+/* interface D3D9On12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_D3D9On12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
+ D3D9On12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct D3D9On12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ D3D9On12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ D3D9On12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ D3D9On12CreatorID * This);
+
+ END_INTERFACE
+ } D3D9On12CreatorIDVtbl;
+
+ interface D3D9On12CreatorID
+ {
+ CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define D3D9On12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define D3D9On12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
+#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
+
+/* interface OpenGLOn12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_OpenGLOn12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
+ OpenGLOn12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct OpenGLOn12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ OpenGLOn12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ OpenGLOn12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ OpenGLOn12CreatorID * This);
+
+ END_INTERFACE
+ } OpenGLOn12CreatorIDVtbl;
+
+ interface OpenGLOn12CreatorID
+ {
+ CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define OpenGLOn12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define OpenGLOn12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
+#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
+
+/* interface OpenCLOn12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_OpenCLOn12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
+ OpenCLOn12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct OpenCLOn12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ OpenCLOn12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ OpenCLOn12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ OpenCLOn12CreatorID * This);
+
+ END_INTERFACE
+ } OpenCLOn12CreatorIDVtbl;
+
+ interface OpenCLOn12CreatorID
+ {
+ CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define OpenCLOn12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define OpenCLOn12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
+#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
+
+/* interface VulkanOn12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_VulkanOn12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
+ VulkanOn12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct VulkanOn12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ VulkanOn12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ VulkanOn12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ VulkanOn12CreatorID * This);
+
+ END_INTERFACE
+ } VulkanOn12CreatorIDVtbl;
+
+ interface VulkanOn12CreatorID
+ {
+ CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define VulkanOn12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define VulkanOn12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
+#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
+
+/* interface DirectMLTensorFlowCreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
+ DirectMLTensorFlowCreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct DirectMLTensorFlowCreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ DirectMLTensorFlowCreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ DirectMLTensorFlowCreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ DirectMLTensorFlowCreatorID * This);
+
+ END_INTERFACE
+ } DirectMLTensorFlowCreatorIDVtbl;
+
+ interface DirectMLTensorFlowCreatorID
+ {
+ CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define DirectMLTensorFlowCreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define DirectMLTensorFlowCreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
+#define __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
+
+/* interface DirectMLPyTorchCreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("af029192-fba1-4b05-9116-235e06560354")
+ DirectMLPyTorchCreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct DirectMLPyTorchCreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ DirectMLPyTorchCreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ DirectMLPyTorchCreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ DirectMLPyTorchCreatorID * This);
+
+ END_INTERFACE
+ } DirectMLPyTorchCreatorIDVtbl;
+
+ interface DirectMLPyTorchCreatorID
+ {
+ CONST_VTBL struct DirectMLPyTorchCreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define DirectMLPyTorchCreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define DirectMLPyTorchCreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define DirectMLPyTorchCreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
+
+
+#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+
+/* interface DirectMLWebNNCreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_DirectMLWebNNCreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
+ DirectMLWebNNCreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct DirectMLWebNNCreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ DirectMLWebNNCreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ DirectMLWebNNCreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ DirectMLWebNNCreatorID * This);
+
+ END_INTERFACE
+ } DirectMLWebNNCreatorIDVtbl;
+
+ interface DirectMLWebNNCreatorID
+ {
+ CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define DirectMLWebNNCreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define DirectMLWebNNCreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
+DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
+DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
+DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
+DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
+DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
+DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
+DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
+DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12compiler.h b/Source/ThirdParty/DirectX12Agility/d3d12compiler.h
new file mode 100644
index 000000000..1d8fe3be6
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12compiler.h
@@ -0,0 +1,977 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12compiler_h__
+#define __d3d12compiler_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
+#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
+typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
+
+#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
+#define __ID3D12CompilerCacheSession_FWD_DEFINED__
+typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
+
+#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
+#define __ID3D12CompilerStateObject_FWD_DEFINED__
+typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
+
+#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Compiler_FWD_DEFINED__
+#define __ID3D12Compiler_FWD_DEFINED__
+typedef interface ID3D12Compiler ID3D12Compiler;
+
+#endif /* __ID3D12Compiler_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
+#define __ID3D12CompilerFactory_FWD_DEFINED__
+typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
+
+#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "dxgicommon.h"
+#include "d3d12.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0000 */
+/* [local] */
+
+#include
+#pragma region App Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+typedef struct D3D12_ADAPTER_FAMILY
+ {
+ WCHAR szAdapterFamily[ 128 ];
+ } D3D12_ADAPTER_FAMILY;
+
+typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
+ _In_ LPCWSTR pPluginCompilerDllPath,
+ _In_ REFIID riid,
+ _COM_Outptr_opt_ void** ppFactory );
+
+HRESULT WINAPI D3D12CompilerCreateFactory(
+ _In_ LPCWSTR pPluginCompilerDllPath,
+ _In_ REFIID riid, // Expected: ID3D12CompilerFactory
+ _COM_Outptr_opt_ void** ppFactory );
+
+typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
+#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerFactoryChild */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
+ ID3D12CompilerFactoryChild : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetFactory(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerFactoryChildVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerFactoryChild * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerFactoryChild * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerFactoryChild * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12CompilerFactoryChild * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ END_INTERFACE
+ } ID3D12CompilerFactoryChildVtbl;
+
+ interface ID3D12CompilerFactoryChild
+ {
+ CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerFactoryChild_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerFactoryChild_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0001 */
+/* [local] */
+
+typedef
+enum D3D12_COMPILER_VALUE_TYPE
+ {
+ D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
+ D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
+ D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
+ D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
+ } D3D12_COMPILER_VALUE_TYPE;
+
+typedef
+enum D3D12_COMPILER_VALUE_TYPE_FLAGS
+ {
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
+ } D3D12_COMPILER_VALUE_TYPE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
+typedef struct D3D12_COMPILER_DATABASE_PATH
+ {
+ D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
+ LPCWSTR pPath;
+ } D3D12_COMPILER_DATABASE_PATH;
+
+typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ } D3D12_COMPILER_CACHE_GROUP_KEY;
+
+typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ } D3D12_COMPILER_CACHE_VALUE_KEY;
+
+typedef struct D3D12_COMPILER_CACHE_VALUE
+ {
+ _Field_size_bytes_full_(ValueSize) void *pValue;
+ UINT ValueSize;
+ } D3D12_COMPILER_CACHE_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
+ {
+ D3D12_COMPILER_VALUE_TYPE Type;
+ D3D12_COMPILER_CACHE_VALUE Value;
+ } D3D12_COMPILER_CACHE_TYPED_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
+ {
+ _Field_size_bytes_full_(ValueSize) const void *pValue;
+ UINT ValueSize;
+ } D3D12_COMPILER_CACHE_CONST_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
+ {
+ D3D12_COMPILER_VALUE_TYPE Type;
+ D3D12_COMPILER_CACHE_CONST_VALUE Value;
+ } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
+
+typedef struct D3D12_COMPILER_TARGET
+ {
+ UINT AdapterFamilyIndex;
+ UINT64 ABIVersion;
+ } D3D12_COMPILER_TARGET;
+
+typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
+ SIZE_T SizeInBytes,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
+ UINT ValueKeyIndex,
+ _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
+ _Inout_opt_ void *pContext);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
+#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerCacheSession */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerCacheSession;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
+ ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FindGroup(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _Out_opt_ UINT *pGroupVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
+ _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindValue(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
+ UINT NumTypedValues,
+ _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
+#else
+ virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
+ D3D12_COMPILER_TARGET * RetVal) = 0;
+#endif
+
+ virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
+ UINT NumValueKeys) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreValue(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
+ UINT NumTypedValues) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerCacheSessionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerCacheSession * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12CompilerCacheSession * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
+ HRESULT ( STDMETHODCALLTYPE *FindGroup )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _Out_opt_ UINT *pGroupVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
+ HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
+ HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
+ _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
+ HRESULT ( STDMETHODCALLTYPE *FindValue )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
+ UINT NumTypedValues,
+ _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
+ const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
+#if !defined(_WIN32)
+ D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
+ ID3D12CompilerCacheSession * This);
+
+#else
+ D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
+ ID3D12CompilerCacheSession * This,
+ D3D12_COMPILER_TARGET * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
+ HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
+ UINT NumValueKeys);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
+ HRESULT ( STDMETHODCALLTYPE *StoreValue )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
+ UINT NumTypedValues);
+
+ END_INTERFACE
+ } ID3D12CompilerCacheSessionVtbl;
+
+ interface ID3D12CompilerCacheSession
+ {
+ CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerCacheSession_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerCacheSession_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+
+#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
+ ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
+
+#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
+ ( (This)->lpVtbl -> GetApplicationDesc(This) )
+#if !defined(_WIN32)
+
+#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
+ ( (This)->lpVtbl -> GetCompilerTarget(This) )
+#else
+#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
+ ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
+#endif
+
+#define ID3D12CompilerCacheSession_GetValueTypes(This) \
+ ( (This)->lpVtbl -> GetValueTypes(This) )
+
+#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
+ ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
+
+#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
+ ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
+#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerStateObject */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerStateObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
+ ID3D12CompilerStateObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCompiler(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerStateObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerStateObject * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerStateObject * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerStateObject * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
+ HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
+ ID3D12CompilerStateObject * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler);
+
+ END_INTERFACE
+ } ID3D12CompilerStateObjectVtbl;
+
+ interface ID3D12CompilerStateObject
+ {
+ CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerStateObject_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerStateObject_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
+ ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0003 */
+/* [local] */
+
+typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
+ {
+ ID3D12CompilerStateObject *pExistingCollection;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
+#define __ID3D12Compiler_INTERFACE_DEFINED__
+
+/* interface ID3D12Compiler */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Compiler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
+ ID3D12Compiler : public ID3D12CompilerFactoryChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerStateObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
+ _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Compiler * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Compiler * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Compiler * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12Compiler * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
+ _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppNewCompilerStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
+ ID3D12Compiler * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession);
+
+ END_INTERFACE
+ } ID3D12CompilerVtbl;
+
+ interface ID3D12Compiler
+ {
+ CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Compiler_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Compiler_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+
+#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
+ ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
+
+#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
+ ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
+
+#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
+ ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
+
+#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
+ ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
+#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
+ ID3D12CompilerFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
+ UINT AdapterFamilyIndex,
+ _Inout_ UINT32 *pNumABIVersions,
+ _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
+ _In_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
+ _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
+ UINT NumPaths,
+ _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
+ _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Inout_ UINT32 *pNumABIVersions,
+ _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
+ ID3D12CompilerFactory * This,
+ _In_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
+ ID3D12CompilerFactory * This,
+ _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
+ UINT NumPaths,
+ _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
+ HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
+ ID3D12CompilerFactory * This,
+ _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler);
+
+ END_INTERFACE
+ } ID3D12CompilerFactoryVtbl;
+
+ interface ID3D12CompilerFactory
+ {
+ CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
+
+#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
+ ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
+
+#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
+ ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
+
+#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
+ ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0005 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
+DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
+DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
+DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
+DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12sdklayers.h b/Source/ThirdParty/DirectX12Agility/d3d12sdklayers.h
new file mode 100644
index 000000000..96c812b14
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12sdklayers.h
@@ -0,0 +1,4280 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12sdklayers_h__
+#define __d3d12sdklayers_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12Debug_FWD_DEFINED__
+#define __ID3D12Debug_FWD_DEFINED__
+typedef interface ID3D12Debug ID3D12Debug;
+
+#endif /* __ID3D12Debug_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug1_FWD_DEFINED__
+#define __ID3D12Debug1_FWD_DEFINED__
+typedef interface ID3D12Debug1 ID3D12Debug1;
+
+#endif /* __ID3D12Debug1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug2_FWD_DEFINED__
+#define __ID3D12Debug2_FWD_DEFINED__
+typedef interface ID3D12Debug2 ID3D12Debug2;
+
+#endif /* __ID3D12Debug2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug3_FWD_DEFINED__
+#define __ID3D12Debug3_FWD_DEFINED__
+typedef interface ID3D12Debug3 ID3D12Debug3;
+
+#endif /* __ID3D12Debug3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug4_FWD_DEFINED__
+#define __ID3D12Debug4_FWD_DEFINED__
+typedef interface ID3D12Debug4 ID3D12Debug4;
+
+#endif /* __ID3D12Debug4_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug5_FWD_DEFINED__
+#define __ID3D12Debug5_FWD_DEFINED__
+typedef interface ID3D12Debug5 ID3D12Debug5;
+
+#endif /* __ID3D12Debug5_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Debug6_FWD_DEFINED__
+#define __ID3D12Debug6_FWD_DEFINED__
+typedef interface ID3D12Debug6 ID3D12Debug6;
+
+#endif /* __ID3D12Debug6_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
+#define __ID3D12DebugDevice1_FWD_DEFINED__
+typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
+
+#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugDevice_FWD_DEFINED__
+#define __ID3D12DebugDevice_FWD_DEFINED__
+typedef interface ID3D12DebugDevice ID3D12DebugDevice;
+
+#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
+#define __ID3D12DebugDevice2_FWD_DEFINED__
+typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
+
+#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
+#define __ID3D12DebugCommandQueue_FWD_DEFINED__
+typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
+
+#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandQueue1_FWD_DEFINED__
+#define __ID3D12DebugCommandQueue1_FWD_DEFINED__
+typedef interface ID3D12DebugCommandQueue1 ID3D12DebugCommandQueue1;
+
+#endif /* __ID3D12DebugCommandQueue1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
+#define __ID3D12DebugCommandList1_FWD_DEFINED__
+typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
+
+#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
+#define __ID3D12DebugCommandList_FWD_DEFINED__
+typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
+
+#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
+#define __ID3D12DebugCommandList2_FWD_DEFINED__
+typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
+
+#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList3_FWD_DEFINED__
+#define __ID3D12DebugCommandList3_FWD_DEFINED__
+typedef interface ID3D12DebugCommandList3 ID3D12DebugCommandList3;
+
+#endif /* __ID3D12DebugCommandList3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12SharingContract_FWD_DEFINED__
+#define __ID3D12SharingContract_FWD_DEFINED__
+typedef interface ID3D12SharingContract ID3D12SharingContract;
+
+#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
+#define __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
+typedef interface ID3D12ManualWriteTrackingResource ID3D12ManualWriteTrackingResource;
+
+#endif /* __ID3D12ManualWriteTrackingResource_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12InfoQueue_FWD_DEFINED__
+#define __ID3D12InfoQueue_FWD_DEFINED__
+typedef interface ID3D12InfoQueue ID3D12InfoQueue;
+
+#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
+#define __ID3D12InfoQueue1_FWD_DEFINED__
+typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
+
+#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "d3d12.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
+/* [local] */
+
+#include
+#pragma region App Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12Debug_INTERFACE_DEFINED__
+#define __ID3D12Debug_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
+ ID3D12Debug : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug * This);
+
+ END_INTERFACE
+ } ID3D12DebugVtbl;
+
+ interface ID3D12Debug
+ {
+ CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
+/* [local] */
+
+typedef
+enum D3D12_GPU_BASED_VALIDATION_FLAGS
+ {
+ D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
+ D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
+ } D3D12_GPU_BASED_VALIDATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
+#define __ID3D12Debug1_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
+ ID3D12Debug1 : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
+
+ virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
+ BOOL Enable) = 0;
+
+ virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
+ BOOL Enable) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
+ void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
+ ID3D12Debug1 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
+ void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
+ ID3D12Debug1 * This,
+ BOOL Enable);
+
+ END_INTERFACE
+ } ID3D12Debug1Vtbl;
+
+ interface ID3D12Debug1
+ {
+ CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug1_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
+
+#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
+#define __ID3D12Debug2_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
+ ID3D12Debug2 : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
+ void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
+ ID3D12Debug2 * This,
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+
+ END_INTERFACE
+ } ID3D12Debug2Vtbl;
+
+ interface ID3D12Debug2
+ {
+ CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
+ ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
+#define __ID3D12Debug3_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
+ ID3D12Debug3 : public ID3D12Debug
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
+ BOOL Enable) = 0;
+
+ virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
+ BOOL Enable) = 0;
+
+ virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
+ void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
+ ID3D12Debug3 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
+ void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
+ ID3D12Debug3 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
+ void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
+ ID3D12Debug3 * This,
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+
+ END_INTERFACE
+ } ID3D12Debug3Vtbl;
+
+ interface ID3D12Debug3
+ {
+ CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug3_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+
+#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
+
+#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
+
+#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
+ ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
+#define __ID3D12Debug4_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
+ ID3D12Debug4 : public ID3D12Debug3
+ {
+ public:
+ virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
+ void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
+ ID3D12Debug4 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
+ void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
+ ID3D12Debug4 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
+ void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
+ ID3D12Debug4 * This,
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
+ void ( STDMETHODCALLTYPE *DisableDebugLayer )(
+ ID3D12Debug4 * This);
+
+ END_INTERFACE
+ } ID3D12Debug4Vtbl;
+
+ interface ID3D12Debug4
+ {
+ CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug4_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+
+#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
+
+#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
+
+#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
+ ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
+
+
+#define ID3D12Debug4_DisableDebugLayer(This) \
+ ( (This)->lpVtbl -> DisableDebugLayer(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
+#define __ID3D12Debug5_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug5 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug5;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
+ ID3D12Debug5 : public ID3D12Debug4
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetEnableAutoName(
+ BOOL Enable) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug5 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug5 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
+ void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
+ ID3D12Debug5 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
+ void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
+ ID3D12Debug5 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
+ void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
+ ID3D12Debug5 * This,
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
+ void ( STDMETHODCALLTYPE *DisableDebugLayer )(
+ ID3D12Debug5 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
+ void ( STDMETHODCALLTYPE *SetEnableAutoName )(
+ ID3D12Debug5 * This,
+ BOOL Enable);
+
+ END_INTERFACE
+ } ID3D12Debug5Vtbl;
+
+ interface ID3D12Debug5
+ {
+ CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug5_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug5_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug5_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+
+#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
+
+#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
+
+#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
+ ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
+
+
+#define ID3D12Debug5_DisableDebugLayer(This) \
+ ( (This)->lpVtbl -> DisableDebugLayer(This) )
+
+
+#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Debug6_INTERFACE_DEFINED__
+#define __ID3D12Debug6_INTERFACE_DEFINED__
+
+/* interface ID3D12Debug6 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Debug6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("82a816d6-5d01-4157-97d0-4975463fd1ed")
+ ID3D12Debug6 : public ID3D12Debug5
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetForceLegacyBarrierValidation(
+ BOOL Enable) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Debug6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Debug6 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Debug6 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Debug6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
+ void ( STDMETHODCALLTYPE *EnableDebugLayer )(
+ ID3D12Debug6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
+ void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
+ ID3D12Debug6 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
+ void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
+ ID3D12Debug6 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
+ void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
+ ID3D12Debug6 * This,
+ D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
+ void ( STDMETHODCALLTYPE *DisableDebugLayer )(
+ ID3D12Debug6 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
+ void ( STDMETHODCALLTYPE *SetEnableAutoName )(
+ ID3D12Debug6 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Debug6, SetForceLegacyBarrierValidation)
+ void ( STDMETHODCALLTYPE *SetForceLegacyBarrierValidation )(
+ ID3D12Debug6 * This,
+ BOOL Enable);
+
+ END_INTERFACE
+ } ID3D12Debug6Vtbl;
+
+ interface ID3D12Debug6
+ {
+ CONST_VTBL struct ID3D12Debug6Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Debug6_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Debug6_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Debug6_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Debug6_EnableDebugLayer(This) \
+ ( (This)->lpVtbl -> EnableDebugLayer(This) )
+
+
+#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
+
+#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
+
+#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags) \
+ ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
+
+
+#define ID3D12Debug6_DisableDebugLayer(This) \
+ ( (This)->lpVtbl -> DisableDebugLayer(This) )
+
+
+#define ID3D12Debug6_SetEnableAutoName(This,Enable) \
+ ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
+
+
+#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable) \
+ ( (This)->lpVtbl -> SetForceLegacyBarrierValidation(This,Enable) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Debug6_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */
+/* [local] */
+
+DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
+typedef
+enum D3D12_RLDO_FLAGS
+ {
+ D3D12_RLDO_NONE = 0,
+ D3D12_RLDO_SUMMARY = 0x1,
+ D3D12_RLDO_DETAIL = 0x2,
+ D3D12_RLDO_IGNORE_INTERNAL = 0x4
+ } D3D12_RLDO_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
+typedef
+enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
+ {
+ D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
+ D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
+ D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
+ D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
+ } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
+
+typedef
+enum D3D12_DEBUG_FEATURE
+ {
+ D3D12_DEBUG_FEATURE_NONE = 0,
+ D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
+ D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
+ D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
+ D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
+ } D3D12_DEBUG_FEATURE;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
+typedef
+enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
+ {
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
+ NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
+ } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
+
+typedef
+enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
+ {
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
+ } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
+typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
+ {
+ UINT MaxMessagesPerCommandList;
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
+ D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
+ } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
+
+typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
+ {
+ FLOAT SlowdownFactor;
+ } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
+
+typedef
+enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
+ {
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
+ } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec;
+
+#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
+#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugDevice1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugDevice1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
+ ID3D12DebugDevice1 : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
+ D3D12_RLDO_FLAGS Flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugDevice1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugDevice1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugDevice1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugDevice1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
+ ID3D12DebugDevice1 * This,
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
+ ID3D12DebugDevice1 * This,
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
+ HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
+ ID3D12DebugDevice1 * This,
+ D3D12_RLDO_FLAGS Flags);
+
+ END_INTERFACE
+ } ID3D12DebugDevice1Vtbl;
+
+ interface ID3D12DebugDevice1
+ {
+ CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugDevice1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugDevice1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
+ ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
+#define __ID3D12DebugDevice_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugDevice */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugDevice;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
+ ID3D12DebugDevice : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
+ D3D12_DEBUG_FEATURE Mask) = 0;
+
+ virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
+ D3D12_RLDO_FLAGS Flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugDeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugDevice * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugDevice * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugDevice * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D12DebugDevice * This,
+ D3D12_DEBUG_FEATURE Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
+ D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D12DebugDevice * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
+ HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
+ ID3D12DebugDevice * This,
+ D3D12_RLDO_FLAGS Flags);
+
+ END_INTERFACE
+ } ID3D12DebugDeviceVtbl;
+
+ interface ID3D12DebugDevice
+ {
+ CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugDevice_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugDevice_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D12DebugDevice_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
+ ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
+#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugDevice2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugDevice2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
+ ID3D12DebugDevice2 : public ID3D12DebugDevice
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugDevice2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugDevice2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugDevice2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugDevice2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D12DebugDevice2 * This,
+ D3D12_DEBUG_FEATURE Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
+ D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D12DebugDevice2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
+ HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
+ ID3D12DebugDevice2 * This,
+ D3D12_RLDO_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
+ ID3D12DebugDevice2 * This,
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
+ ID3D12DebugDevice2 * This,
+ D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ END_INTERFACE
+ } ID3D12DebugDevice2Vtbl;
+
+ interface ID3D12DebugDevice2
+ {
+ CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugDevice2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugDevice2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D12DebugDevice2_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
+ ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
+
+
+#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
+/* [local] */
+
+DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
+
+#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandQueue */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandQueue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
+ ID3D12DebugCommandQueue : public IUnknown
+ {
+ public:
+ virtual BOOL STDMETHODCALLTYPE AssertResourceState(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandQueueVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandQueue * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandQueue * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandQueue * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ END_INTERFACE
+ } ID3D12DebugCommandQueueVtbl;
+
+ interface ID3D12DebugCommandQueue
+ {
+ CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandQueue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandQueue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandQueue1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandQueue1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("16be35a2-bfd6-49f2-bcae-eaae4aff862d")
+ ID3D12DebugCommandQueue1 : public ID3D12DebugCommandQueue
+ {
+ public:
+ virtual void STDMETHODCALLTYPE AssertResourceAccess(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_ACCESS Access) = 0;
+
+ virtual void STDMETHODCALLTYPE AssertTextureLayout(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_LAYOUT Layout) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandQueue1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandQueue1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertResourceAccess)
+ void ( STDMETHODCALLTYPE *AssertResourceAccess )(
+ ID3D12DebugCommandQueue1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_ACCESS Access);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertTextureLayout)
+ void ( STDMETHODCALLTYPE *AssertTextureLayout )(
+ ID3D12DebugCommandQueue1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_LAYOUT Layout);
+
+ END_INTERFACE
+ } ID3D12DebugCommandQueue1Vtbl;
+
+ interface ID3D12DebugCommandQueue1
+ {
+ CONST_VTBL struct ID3D12DebugCommandQueue1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandQueue1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandQueue1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+
+#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access) \
+ ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
+
+#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout) \
+ ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */
+/* [local] */
+
+typedef
+enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
+ {
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
+ } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
+
+typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
+ {
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
+ } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec;
+
+#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandList1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandList1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
+ ID3D12DebugCommandList1 : public IUnknown
+ {
+ public:
+ virtual BOOL STDMETHODCALLTYPE AssertResourceState(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandList1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandList1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
+ ID3D12DebugCommandList1 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
+ ID3D12DebugCommandList1 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ END_INTERFACE
+ } ID3D12DebugCommandList1Vtbl;
+
+ interface ID3D12DebugCommandList1
+ {
+ CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandList1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandList1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
+ ID3D12DebugCommandList : public IUnknown
+ {
+ public:
+ virtual BOOL STDMETHODCALLTYPE AssertResourceState(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
+ D3D12_DEBUG_FEATURE Mask) = 0;
+
+ virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandList * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D12DebugCommandList * This,
+ D3D12_DEBUG_FEATURE Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
+ D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D12DebugCommandList * This);
+
+ END_INTERFACE
+ } ID3D12DebugCommandListVtbl;
+
+ interface ID3D12DebugCommandList
+ {
+ CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D12DebugCommandList_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandList2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandList2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
+ ID3D12DebugCommandList2 : public ID3D12DebugCommandList
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandList2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandList2 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D12DebugCommandList2 * This,
+ D3D12_DEBUG_FEATURE Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
+ D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D12DebugCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
+ ID3D12DebugCommandList2 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
+ ID3D12DebugCommandList2 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ END_INTERFACE
+ } ID3D12DebugCommandList2Vtbl;
+
+ interface ID3D12DebugCommandList2
+ {
+ CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandList2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandList2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D12DebugCommandList2_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+
+#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DebugCommandList3_INTERFACE_DEFINED__
+#define __ID3D12DebugCommandList3_INTERFACE_DEFINED__
+
+/* interface ID3D12DebugCommandList3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DebugCommandList3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("197d5e15-4d37-4d34-af78-724cd70fdb1f")
+ ID3D12DebugCommandList3 : public ID3D12DebugCommandList2
+ {
+ public:
+ virtual void STDMETHODCALLTYPE AssertResourceAccess(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_ACCESS Access) = 0;
+
+ virtual void STDMETHODCALLTYPE AssertTextureLayout(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_LAYOUT Layout) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DebugCommandList3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DebugCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DebugCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DebugCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
+ BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
+ ID3D12DebugCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ UINT State);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D12DebugCommandList3 * This,
+ D3D12_DEBUG_FEATURE Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
+ D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D12DebugCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
+ ID3D12DebugCommandList3 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _In_reads_bytes_(DataSize) const void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
+ HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
+ ID3D12DebugCommandList3 * This,
+ D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
+ _Out_writes_bytes_(DataSize) void *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertResourceAccess)
+ void ( STDMETHODCALLTYPE *AssertResourceAccess )(
+ ID3D12DebugCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_ACCESS Access);
+
+ DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertTextureLayout)
+ void ( STDMETHODCALLTYPE *AssertTextureLayout )(
+ ID3D12DebugCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ D3D12_BARRIER_LAYOUT Layout);
+
+ END_INTERFACE
+ } ID3D12DebugCommandList3Vtbl;
+
+ interface ID3D12DebugCommandList3
+ {
+ CONST_VTBL struct ID3D12DebugCommandList3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DebugCommandList3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DebugCommandList3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State) \
+ ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
+
+#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D12DebugCommandList3_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+
+#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
+
+#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize) \
+ ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
+
+
+#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access) \
+ ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
+
+#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout) \
+ ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DebugCommandList3_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
+#define __ID3D12SharingContract_INTERFACE_DEFINED__
+
+/* interface ID3D12SharingContract */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12SharingContract;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
+ ID3D12SharingContract : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Present(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _In_ HWND window) = 0;
+
+ virtual void STDMETHODCALLTYPE SharedFenceSignal(
+ _In_ ID3D12Fence *pFence,
+ UINT64 FenceValue) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginCapturableWork(
+ _In_ REFGUID guid) = 0;
+
+ virtual void STDMETHODCALLTYPE EndCapturableWork(
+ _In_ REFGUID guid) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12SharingContractVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12SharingContract * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12SharingContract * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12SharingContract * This);
+
+ DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
+ void ( STDMETHODCALLTYPE *Present )(
+ ID3D12SharingContract * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _In_ HWND window);
+
+ DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
+ void ( STDMETHODCALLTYPE *SharedFenceSignal )(
+ ID3D12SharingContract * This,
+ _In_ ID3D12Fence *pFence,
+ UINT64 FenceValue);
+
+ DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
+ void ( STDMETHODCALLTYPE *BeginCapturableWork )(
+ ID3D12SharingContract * This,
+ _In_ REFGUID guid);
+
+ DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
+ void ( STDMETHODCALLTYPE *EndCapturableWork )(
+ ID3D12SharingContract * This,
+ _In_ REFGUID guid);
+
+ END_INTERFACE
+ } ID3D12SharingContractVtbl;
+
+ interface ID3D12SharingContract
+ {
+ CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12SharingContract_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12SharingContract_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
+ ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
+
+#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
+ ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
+
+#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
+ ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
+
+#define ID3D12SharingContract_EndCapturableWork(This,guid) \
+ ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
+#define __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
+
+/* interface ID3D12ManualWriteTrackingResource */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12ManualWriteTrackingResource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("86ca3b85-49ad-4b6e-aed5-eddb18540f41")
+ ID3D12ManualWriteTrackingResource : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE TrackWrite(
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12ManualWriteTrackingResourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12ManualWriteTrackingResource * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12ManualWriteTrackingResource * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12ManualWriteTrackingResource * This);
+
+ DECLSPEC_XFGVIRT(ID3D12ManualWriteTrackingResource, TrackWrite)
+ void ( STDMETHODCALLTYPE *TrackWrite )(
+ ID3D12ManualWriteTrackingResource * This,
+ UINT Subresource,
+ _In_opt_ const D3D12_RANGE *pWrittenRange);
+
+ END_INTERFACE
+ } ID3D12ManualWriteTrackingResourceVtbl;
+
+ interface ID3D12ManualWriteTrackingResource
+ {
+ CONST_VTBL struct ID3D12ManualWriteTrackingResourceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12ManualWriteTrackingResource_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12ManualWriteTrackingResource_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange) \
+ ( (This)->lpVtbl -> TrackWrite(This,Subresource,pWrittenRange) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0018 */
+/* [local] */
+
+typedef
+enum D3D12_MESSAGE_CATEGORY
+ {
+ D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
+ D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
+ D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
+ } D3D12_MESSAGE_CATEGORY;
+
+typedef
+enum D3D12_MESSAGE_SEVERITY
+ {
+ D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
+ D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
+ D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
+ D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
+ D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
+ } D3D12_MESSAGE_SEVERITY;
+
+typedef
+enum D3D12_MESSAGE_ID
+ {
+ D3D12_MESSAGE_ID_UNKNOWN = 0,
+ D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
+ D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
+ D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
+ D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
+ D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
+ D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
+ D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
+ D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
+ D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
+ D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
+ D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
+ D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
+ D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
+ D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
+ D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
+ D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
+ D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
+ D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
+ D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
+ D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
+ D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
+ D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
+ D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
+ D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
+ D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
+ D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
+ D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
+ D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
+ D3D12_MESSAGE_ID_CREATE_HEAP = 566,
+ D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
+ D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
+ D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
+ D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
+ D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
+ D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
+ D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
+ D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
+ D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
+ D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
+ D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
+ D3D12_MESSAGE_ID_LIVE_HEAP = 579,
+ D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
+ D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
+ D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
+ D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
+ D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
+ D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
+ D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
+ D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
+ D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
+ D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
+ D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
+ D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
+ D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
+ D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
+ D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
+ D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
+ D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
+ D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
+ D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
+ D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
+ D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
+ D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
+ D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
+ D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
+ D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
+ D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
+ D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
+ D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
+ D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
+ D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
+ D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
+ D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
+ D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
+ D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
+ D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
+ D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
+ D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
+ D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
+ D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
+ D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
+ D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
+ D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
+ D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
+ D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
+ D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
+ D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
+ D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
+ D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
+ D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
+ D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
+ D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
+ D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
+ D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
+ D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
+ D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
+ D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
+ D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
+ D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
+ D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
+ D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
+ D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
+ D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
+ D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
+ D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
+ D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
+ D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
+ D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
+ D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
+ D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
+ D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
+ D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
+ D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
+ D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
+ D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
+ D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
+ D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
+ D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
+ D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
+ D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
+ D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
+ D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
+ D3D12_MESSAGE_ID_DEPRECATED_API = 989,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
+ D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
+ D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
+ D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
+ D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
+ D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
+ D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
+ D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
+ D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
+ D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
+ D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
+ D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
+ D3D12_MESSAGE_ID_END_EVENT = 1015,
+ D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
+ D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
+ D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
+ D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
+ D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
+ D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
+ D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
+ D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
+ D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
+ D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
+ D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
+ D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
+ D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
+ D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
+ D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
+ D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
+ D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
+ D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
+ D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
+ D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
+ D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
+ D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
+ D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
+ D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
+ D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
+ D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
+ D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
+ D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
+ D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
+ D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
+ D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
+ D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
+ D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
+ D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
+ D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
+ D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
+ D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
+ D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
+ D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
+ D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
+ D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
+ D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
+ D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
+ D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
+ D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
+ D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
+ D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
+ D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
+ D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
+ D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
+ D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
+ D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
+ D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
+ D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
+ D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
+ D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
+ D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
+ D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
+ D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
+ D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
+ D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
+ D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
+ D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
+ D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
+ D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
+ D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
+ D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
+ D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
+ D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
+ D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
+ D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
+ D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
+ D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
+ D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
+ D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
+ D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
+ D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
+ D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
+ D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
+ D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
+ D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
+ D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
+ D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
+ D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
+ D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
+ D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
+ D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
+ D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
+ D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
+ D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
+ D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
+ D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
+ D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
+ D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
+ D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
+ D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
+ D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
+ D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
+ D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
+ D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
+ D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
+ D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
+ D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
+ D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
+ D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
+ D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
+ D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
+ D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
+ D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
+ D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
+ D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
+ D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
+ D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
+ D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
+ D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
+ D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
+ D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
+ D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
+ D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
+ D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
+ D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
+ D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
+ D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
+ D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
+ D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
+ D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
+ D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
+ D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
+ D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
+ D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
+ D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
+ D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
+ D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
+ D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
+ D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
+ D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
+ D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
+ D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
+ D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
+ D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
+ D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
+ D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
+ D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
+ D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
+ D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
+ D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
+ D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
+ D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
+ D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
+ D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
+ D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
+ D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
+ D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
+ D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
+ D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
+ D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
+ D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
+ D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
+ D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
+ D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
+ D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
+ D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
+ D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
+ D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
+ D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
+ D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
+ D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
+ D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
+ D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
+ D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
+ D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
+ D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
+ D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
+ D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
+ D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
+ D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
+ D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
+ D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
+ D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
+ D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
+ D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
+ D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
+ D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
+ D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
+ D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
+ D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
+ D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
+ D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
+ D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
+ D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
+ D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
+ D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
+ D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
+ D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
+ D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
+ D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
+ } D3D12_MESSAGE_ID;
+
+typedef struct D3D12_MESSAGE
+ {
+ D3D12_MESSAGE_CATEGORY Category;
+ D3D12_MESSAGE_SEVERITY Severity;
+ D3D12_MESSAGE_ID ID;
+ _Field_size_(DescriptionByteLength) const char *pDescription;
+ SIZE_T DescriptionByteLength;
+ } D3D12_MESSAGE;
+
+typedef struct D3D12_INFO_QUEUE_FILTER_DESC
+ {
+ UINT NumCategories;
+ _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
+ UINT NumSeverities;
+ _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
+ UINT NumIDs;
+ _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
+ } D3D12_INFO_QUEUE_FILTER_DESC;
+
+typedef struct D3D12_INFO_QUEUE_FILTER
+ {
+ D3D12_INFO_QUEUE_FILTER_DESC AllowList;
+ D3D12_INFO_QUEUE_FILTER_DESC DenyList;
+ } D3D12_INFO_QUEUE_FILTER;
+
+#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_s_ifspec;
+
+#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
+#define __ID3D12InfoQueue_INTERFACE_DEFINED__
+
+/* interface ID3D12InfoQueue */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12InfoQueue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
+ ID3D12InfoQueue : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
+ _In_ UINT64 MessageCountLimit) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMessage(
+ _In_ UINT64 MessageIndex,
+ _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
+ _Inout_ SIZE_T *pMessageByteLength) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddMessage(
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ LPCSTR pDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ LPCSTR pDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ BOOL bEnable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ BOOL bEnable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ BOOL bEnable) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
+ _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
+ _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
+ _In_ D3D12_MESSAGE_ID ID) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
+ _In_ BOOL bMute) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12InfoQueueVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12InfoQueue * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
+ HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
+ ID3D12InfoQueue * This,
+ _In_ UINT64 MessageCountLimit);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
+ void ( STDMETHODCALLTYPE *ClearStoredMessages )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
+ HRESULT ( STDMETHODCALLTYPE *GetMessage )(
+ ID3D12InfoQueue * This,
+ _In_ UINT64 MessageIndex,
+ _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
+ _Inout_ SIZE_T *pMessageByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
+ UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
+ HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
+ ID3D12InfoQueue * This,
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
+ void ( STDMETHODCALLTYPE *ClearStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
+ void ( STDMETHODCALLTYPE *PopStorageFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
+ UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
+ HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
+ ID3D12InfoQueue * This,
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
+ void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
+ void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
+ UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
+ ID3D12InfoQueue * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
+ HRESULT ( STDMETHODCALLTYPE *AddMessage )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ LPCSTR pDescription);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
+ HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ LPCSTR pDescription);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
+ ID3D12InfoQueue * This,
+ _In_ D3D12_MESSAGE_ID ID);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
+ void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
+ ID3D12InfoQueue * This,
+ _In_ BOOL bMute);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
+ BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
+ ID3D12InfoQueue * This);
+
+ END_INTERFACE
+ } ID3D12InfoQueueVtbl;
+
+ interface ID3D12InfoQueue
+ {
+ CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12InfoQueue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12InfoQueue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
+ ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
+
+#define ID3D12InfoQueue_ClearStoredMessages(This) \
+ ( (This)->lpVtbl -> ClearStoredMessages(This) )
+
+#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
+ ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
+
+#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
+
+#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
+
+#define ID3D12InfoQueue_GetNumStoredMessages(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessages(This) )
+
+#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
+
+#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
+
+#define ID3D12InfoQueue_GetMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetMessageCountLimit(This) )
+
+#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
+
+#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D12InfoQueue_ClearStorageFilter(This) \
+ ( (This)->lpVtbl -> ClearStorageFilter(This) )
+
+#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
+
+#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
+
+#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
+
+#define ID3D12InfoQueue_PopStorageFilter(This) \
+ ( (This)->lpVtbl -> PopStorageFilter(This) )
+
+#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
+
+#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
+
+#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
+ ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
+
+#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
+
+#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
+
+#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
+
+#define ID3D12InfoQueue_PopRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PopRetrievalFilter(This) )
+
+#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
+
+#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
+ ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
+
+#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
+ ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
+
+#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
+
+#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
+
+#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
+
+#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
+ ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
+
+#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
+ ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
+
+#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
+ ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
+
+#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
+ ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
+
+#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
+ ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0019 */
+/* [local] */
+
+typedef
+enum D3D12_MESSAGE_CALLBACK_FLAGS
+ {
+ D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
+ D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
+ } D3D12_MESSAGE_CALLBACK_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
+typedef void ( __stdcall *D3D12MessageFunc )(
+ D3D12_MESSAGE_CATEGORY Category,
+ D3D12_MESSAGE_SEVERITY Severity,
+ D3D12_MESSAGE_ID ID,
+ LPCSTR pDescription,
+ void *pContext);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_s_ifspec;
+
+#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
+#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
+
+/* interface ID3D12InfoQueue1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12InfoQueue1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
+ ID3D12InfoQueue1 : public ID3D12InfoQueue
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
+ _In_ D3D12MessageFunc CallbackFunc,
+ _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
+ _Inout_ void *pContext,
+ _Inout_ DWORD *pCallbackCookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
+ _In_ DWORD CallbackCookie) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12InfoQueue1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12InfoQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
+ HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
+ ID3D12InfoQueue1 * This,
+ _In_ UINT64 MessageCountLimit);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
+ void ( STDMETHODCALLTYPE *ClearStoredMessages )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
+ HRESULT ( STDMETHODCALLTYPE *GetMessage )(
+ ID3D12InfoQueue1 * This,
+ _In_ UINT64 MessageIndex,
+ _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
+ _Inout_ SIZE_T *pMessageByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
+ UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
+ HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
+ ID3D12InfoQueue1 * This,
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
+ void ( STDMETHODCALLTYPE *ClearStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
+ void ( STDMETHODCALLTYPE *PopStorageFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
+ UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
+ HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
+ ID3D12InfoQueue1 * This,
+ _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
+ _Inout_ SIZE_T *pFilterByteLength);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
+ void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
+ HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
+ void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
+ UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
+ HRESULT ( STDMETHODCALLTYPE *AddMessage )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ LPCSTR pDescription);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
+ HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ LPCSTR pDescription);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
+ HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_ID ID,
+ _In_ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_CATEGORY Category);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_SEVERITY Severity);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
+ BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12_MESSAGE_ID ID);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
+ void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
+ ID3D12InfoQueue1 * This,
+ _In_ BOOL bMute);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
+ BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
+ ID3D12InfoQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
+ HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
+ ID3D12InfoQueue1 * This,
+ _In_ D3D12MessageFunc CallbackFunc,
+ _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
+ _Inout_ void *pContext,
+ _Inout_ DWORD *pCallbackCookie);
+
+ DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
+ ID3D12InfoQueue1 * This,
+ _In_ DWORD CallbackCookie);
+
+ END_INTERFACE
+ } ID3D12InfoQueue1Vtbl;
+
+ interface ID3D12InfoQueue1
+ {
+ CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12InfoQueue1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12InfoQueue1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
+ ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
+
+#define ID3D12InfoQueue1_ClearStoredMessages(This) \
+ ( (This)->lpVtbl -> ClearStoredMessages(This) )
+
+#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
+ ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
+
+#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
+
+#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
+
+#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessages(This) )
+
+#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
+
+#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
+
+#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetMessageCountLimit(This) )
+
+#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
+
+#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D12InfoQueue1_ClearStorageFilter(This) \
+ ( (This)->lpVtbl -> ClearStorageFilter(This) )
+
+#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
+
+#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
+
+#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
+
+#define ID3D12InfoQueue1_PopStorageFilter(This) \
+ ( (This)->lpVtbl -> PopStorageFilter(This) )
+
+#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
+
+#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
+
+#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
+ ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
+
+#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
+
+#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
+
+#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
+
+#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PopRetrievalFilter(This) )
+
+#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
+
+#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
+ ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
+
+#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
+ ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
+
+#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
+
+#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
+
+#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
+ ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
+
+#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
+ ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
+
+#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
+ ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
+
+#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
+ ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
+
+#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
+ ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
+
+#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
+ ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
+
+
+#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
+ ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
+
+#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
+ ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12sdklayers_0000_0020 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
+DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
+DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
+DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
+DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
+DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
+DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);
+DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
+DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
+DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
+DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
+DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);
+DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
+DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
+DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
+DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);
+DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
+DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);
+DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
+DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12shader.h b/Source/ThirdParty/DirectX12Agility/d3d12shader.h
new file mode 100644
index 000000000..56455b5ed
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12shader.h
@@ -0,0 +1,495 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+//
+// File: D3D12Shader.h
+// Content: D3D12 Shader Types and APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3D12SHADER_H__
+#define __D3D12SHADER_H__
+
+#include "d3dcommon.h"
+
+typedef enum D3D12_SHADER_VERSION_TYPE
+{
+ D3D12_SHVER_PIXEL_SHADER = 0,
+ D3D12_SHVER_VERTEX_SHADER = 1,
+ D3D12_SHVER_GEOMETRY_SHADER = 2,
+
+ // D3D11 Shaders
+ D3D12_SHVER_HULL_SHADER = 3,
+ D3D12_SHVER_DOMAIN_SHADER = 4,
+ D3D12_SHVER_COMPUTE_SHADER = 5,
+
+ // D3D12 Shaders
+ D3D12_SHVER_LIBRARY = 6,
+
+ D3D12_SHVER_RAY_GENERATION_SHADER = 7,
+ D3D12_SHVER_INTERSECTION_SHADER = 8,
+ D3D12_SHVER_ANY_HIT_SHADER = 9,
+ D3D12_SHVER_CLOSEST_HIT_SHADER = 10,
+ D3D12_SHVER_MISS_SHADER = 11,
+ D3D12_SHVER_CALLABLE_SHADER = 12,
+
+ D3D12_SHVER_MESH_SHADER = 13,
+ D3D12_SHVER_AMPLIFICATION_SHADER = 14,
+
+ D3D12_SHVER_NODE_SHADER = 15,
+
+ D3D12_SHVER_RESERVED0 = 0xFFF0,
+} D3D12_SHADER_VERSION_TYPE;
+
+#define D3D12_SHVER_GET_TYPE(_Version) \
+ (((_Version) >> 16) & 0xffff)
+#define D3D12_SHVER_GET_MAJOR(_Version) \
+ (((_Version) >> 4) & 0xf)
+#define D3D12_SHVER_GET_MINOR(_Version) \
+ (((_Version) >> 0) & 0xf)
+
+// Slot ID for library function return
+#define D3D_RETURN_PARAMETER_INDEX (-1)
+
+typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
+
+typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
+
+
+typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
+{
+ LPCSTR SemanticName; // Name of the semantic
+ UINT SemanticIndex; // Index of the semantic
+ UINT Register; // Number of member variables
+ D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
+ D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
+ BYTE Mask; // Mask to indicate which components of the register
+ // are used (combination of D3D10_COMPONENT_MASK values)
+ BYTE ReadWriteMask; // Mask to indicate whether a given component is
+ // never written (if this is an output signature) or
+ // always read (if this is an input signature).
+ // (combination of D3D_MASK_* values)
+ UINT Stream; // Stream index
+ D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
+} D3D12_SIGNATURE_PARAMETER_DESC;
+
+typedef struct _D3D12_SHADER_BUFFER_DESC
+{
+ LPCSTR Name; // Name of the constant buffer
+ D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
+ UINT Variables; // Number of member variables
+ UINT Size; // Size of CB (in bytes)
+ UINT uFlags; // Buffer description flags
+} D3D12_SHADER_BUFFER_DESC;
+
+typedef struct _D3D12_SHADER_VARIABLE_DESC
+{
+ LPCSTR Name; // Name of the variable
+ UINT StartOffset; // Offset in constant buffer's backing store
+ UINT Size; // Size of variable (in bytes)
+ UINT uFlags; // Variable flags
+ LPVOID DefaultValue; // Raw pointer to default value
+ UINT StartTexture; // First texture index (or -1 if no textures used)
+ UINT TextureSize; // Number of texture slots possibly used.
+ UINT StartSampler; // First sampler index (or -1 if no textures used)
+ UINT SamplerSize; // Number of sampler slots possibly used.
+} D3D12_SHADER_VARIABLE_DESC;
+
+typedef struct _D3D12_SHADER_TYPE_DESC
+{
+ D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
+ D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
+ UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
+ UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
+ UINT Elements; // Number of elements (0 if not an array)
+ UINT Members; // Number of members (0 if not a structure)
+ UINT Offset; // Offset from the start of structure (0 if not a structure member)
+ LPCSTR Name; // Name of type, can be NULL
+} D3D12_SHADER_TYPE_DESC;
+
+typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
+
+typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
+
+typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
+
+typedef struct _D3D12_SHADER_DESC
+{
+ UINT Version; // Shader version
+ LPCSTR Creator; // Creator string
+ UINT Flags; // Shader compilation/parse flags
+
+ UINT ConstantBuffers; // Number of constant buffers
+ UINT BoundResources; // Number of bound resources
+ UINT InputParameters; // Number of parameters in the input signature
+ UINT OutputParameters; // Number of parameters in the output signature
+
+ UINT InstructionCount; // Number of emitted instructions
+ UINT TempRegisterCount; // Number of temporary registers used
+ UINT TempArrayCount; // Number of temporary arrays used
+ UINT DefCount; // Number of constant defines
+ UINT DclCount; // Number of declarations (input + output)
+ UINT TextureNormalInstructions; // Number of non-categorized texture instructions
+ UINT TextureLoadInstructions; // Number of texture load instructions
+ UINT TextureCompInstructions; // Number of texture comparison instructions
+ UINT TextureBiasInstructions; // Number of texture bias instructions
+ UINT TextureGradientInstructions; // Number of texture gradient instructions
+ UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
+ UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
+ UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
+ UINT StaticFlowControlCount; // Number of static flow control instructions used
+ UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
+ UINT MacroInstructionCount; // Number of macro instructions used
+ UINT ArrayInstructionCount; // Number of array instructions used
+ UINT CutInstructionCount; // Number of cut instructions used
+ UINT EmitInstructionCount; // Number of emit instructions used
+ D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
+ UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
+ D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
+ UINT PatchConstantParameters; // Number of parameters in the patch constant signature
+ UINT cGSInstanceCount; // Number of Geometry shader instances
+ UINT cControlPoints; // Number of control points in the HS->DS stage
+ D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
+ D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
+ D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
+ // instruction counts
+ UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
+ UINT cInterlockedInstructions; // Number of interlocked instructions
+ UINT cTextureStoreInstructions; // Number of texture writes
+} D3D12_SHADER_DESC;
+
+typedef struct _D3D12_SHADER_INPUT_BIND_DESC
+{
+ LPCSTR Name; // Name of the resource
+ D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
+ UINT BindPoint; // Starting bind point
+ UINT BindCount; // Number of contiguous bind points (for arrays)
+
+ UINT uFlags; // Input binding flags
+ D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
+ D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
+ UINT NumSamples; // Number of samples (0 if not MS texture)
+ UINT Space; // Register space
+ UINT uID; // Range ID in the bytecode
+} D3D12_SHADER_INPUT_BIND_DESC;
+
+#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
+#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
+#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
+#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
+#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
+#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
+#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
+#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
+#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
+#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
+#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
+#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
+#define D3D_SHADER_REQUIRES_ROVS 0x00001000
+#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
+#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
+#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
+#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
+#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
+#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
+#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
+#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
+#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
+#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
+#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
+#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
+#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
+#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
+#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
+#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
+#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
+#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
+#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
+#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
+
+
+typedef struct _D3D12_LIBRARY_DESC
+{
+ LPCSTR Creator; // The name of the originator of the library.
+ UINT Flags; // Compilation flags.
+ UINT FunctionCount; // Number of functions exported from the library.
+} D3D12_LIBRARY_DESC;
+
+typedef struct _D3D12_FUNCTION_DESC
+{
+ UINT Version; // Shader version
+ LPCSTR Creator; // Creator string
+ UINT Flags; // Shader compilation/parse flags
+
+ UINT ConstantBuffers; // Number of constant buffers
+ UINT BoundResources; // Number of bound resources
+
+ UINT InstructionCount; // Number of emitted instructions
+ UINT TempRegisterCount; // Number of temporary registers used
+ UINT TempArrayCount; // Number of temporary arrays used
+ UINT DefCount; // Number of constant defines
+ UINT DclCount; // Number of declarations (input + output)
+ UINT TextureNormalInstructions; // Number of non-categorized texture instructions
+ UINT TextureLoadInstructions; // Number of texture load instructions
+ UINT TextureCompInstructions; // Number of texture comparison instructions
+ UINT TextureBiasInstructions; // Number of texture bias instructions
+ UINT TextureGradientInstructions; // Number of texture gradient instructions
+ UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
+ UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
+ UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
+ UINT StaticFlowControlCount; // Number of static flow control instructions used
+ UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
+ UINT MacroInstructionCount; // Number of macro instructions used
+ UINT ArrayInstructionCount; // Number of array instructions used
+ UINT MovInstructionCount; // Number of mov instructions used
+ UINT MovcInstructionCount; // Number of movc instructions used
+ UINT ConversionInstructionCount; // Number of type conversion instructions used
+ UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
+ D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
+ UINT64 RequiredFeatureFlags; // Required feature flags
+
+ LPCSTR Name; // Function name
+ INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
+ BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
+ BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
+ BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
+} D3D12_FUNCTION_DESC;
+
+typedef struct _D3D12_PARAMETER_DESC
+{
+ LPCSTR Name; // Parameter name.
+ LPCSTR SemanticName; // Parameter semantic name (+index).
+ D3D_SHADER_VARIABLE_TYPE Type; // Element type.
+ D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
+ UINT Rows; // Rows are for matrix parameters.
+ UINT Columns; // Components or Columns in matrix.
+ D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
+ D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
+
+ UINT FirstInRegister; // The first input register for this parameter.
+ UINT FirstInComponent; // The first input register component for this parameter.
+ UINT FirstOutRegister; // The first output register for this parameter.
+ UINT FirstOutComponent; // The first output register component for this parameter.
+} D3D12_PARAMETER_DESC;
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Interfaces ////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
+typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
+
+typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
+typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
+
+typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
+typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
+
+typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
+typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
+
+typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
+typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
+
+typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
+typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
+
+typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
+typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
+
+
+// {E913C351-783D-48CA-A1D1-4F306284AD56}
+interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
+DEFINE_GUID(IID_ID3D12ShaderReflectionType,
+0xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
+
+#undef INTERFACE
+#define INTERFACE ID3D12ShaderReflectionType
+
+DECLARE_INTERFACE(ID3D12ShaderReflectionType)
+{
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
+ STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
+
+ STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
+ STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
+ STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
+ STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
+};
+
+// {8337A8A6-A216-444A-B2F4-314733A73AEA}
+interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
+DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
+0x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
+
+#undef INTERFACE
+#define INTERFACE ID3D12ShaderReflectionVariable
+
+DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
+{
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
+
+ STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
+};
+
+// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
+interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
+DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
+0xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
+
+#undef INTERFACE
+#define INTERFACE ID3D12ShaderReflectionConstantBuffer
+
+DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
+{
+ STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
+};
+
+// The ID3D12ShaderReflection IID may change from SDK version to SDK version
+// if the reflection API changes. This prevents new code with the new API
+// from working with an old binary. Recompiling with the new header
+// will pick up the new IID.
+
+// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
+interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
+DEFINE_GUID(IID_ID3D12ShaderReflection,
+0x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
+
+#undef INTERFACE
+#define INTERFACE ID3D12ShaderReflection
+
+DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
+ _Out_ LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
+
+ STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
+ _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
+
+ STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
+ _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+ STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
+ _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+ STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
+ _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
+
+ STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
+ _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
+
+ STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
+
+ STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
+ STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
+
+ STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
+ STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
+
+ STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
+ _Out_opt_ UINT* pSizeX,
+ _Out_opt_ UINT* pSizeY,
+ _Out_opt_ UINT* pSizeZ) PURE;
+
+ STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
+};
+
+// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
+interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
+DEFINE_GUID(IID_ID3D12LibraryReflection,
+0x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
+
+#undef INTERFACE
+#define INTERFACE ID3D12LibraryReflection
+
+DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
+
+ STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
+};
+
+// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
+interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
+DEFINE_GUID(IID_ID3D12FunctionReflection,
+0x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
+
+#undef INTERFACE
+#define INTERFACE ID3D12FunctionReflection
+
+DECLARE_INTERFACE(ID3D12FunctionReflection)
+{
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
+ STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
+
+ STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
+ _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
+
+ STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
+
+ STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
+ _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
+
+ // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
+ STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
+};
+
+// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
+interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
+DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
+0xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
+
+#undef INTERFACE
+#define INTERFACE ID3D12FunctionParameterReflection
+
+DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
+{
+ STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
+};
+
+
+//////////////////////////////////////////////////////////////////////////////
+// APIs //////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3D12SHADER_H__
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3d12video.h b/Source/ThirdParty/DirectX12Agility/d3d12video.h
new file mode 100644
index 000000000..843e78dec
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3d12video.h
@@ -0,0 +1,10726 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12video_h__
+#define __d3d12video_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
+#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
+typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
+
+#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice_FWD_DEFINED__
+#define __ID3D12VideoDevice_FWD_DEFINED__
+typedef interface ID3D12VideoDevice ID3D12VideoDevice;
+
+#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
+#define __ID3D12VideoDecoder_FWD_DEFINED__
+typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
+
+#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
+#define __ID3D12VideoProcessor_FWD_DEFINED__
+typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
+
+#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
+#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
+typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
+
+#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
+#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
+typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
+
+#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
+#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
+typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
+
+#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
+#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
+typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
+
+#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
+#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
+typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
+
+#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
+#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
+typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
+
+#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
+#define __ID3D12VideoDevice1_FWD_DEFINED__
+typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
+
+#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
+
+#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
+#define __ID3D12VideoDecoder1_FWD_DEFINED__
+typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
+
+#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
+#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
+typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
+
+#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
+#define __ID3D12VideoProcessor1_FWD_DEFINED__
+typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
+
+#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
+#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
+typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
+
+#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
+#define __ID3D12VideoDevice2_FWD_DEFINED__
+typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
+
+#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
+#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
+typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
+
+#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
+#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
+typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
+
+#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
+#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
+typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
+
+#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
+#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
+typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
+
+#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
+
+#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
+#define __ID3D12VideoEncoder_FWD_DEFINED__
+typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
+
+#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
+#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
+typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
+
+#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
+#define __ID3D12VideoDevice3_FWD_DEFINED__
+typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
+
+#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
+
+#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
+
+#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
+#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
+typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
+
+#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
+#define __ID3D12VideoDevice4_FWD_DEFINED__
+typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
+
+#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
+
+#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "dxgicommon.h"
+#include "d3d12.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12video_0000_0000 */
+/* [local] */
+
+#include
+#pragma region App Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+typedef
+enum D3D12_VIDEO_FIELD_TYPE
+ {
+ D3D12_VIDEO_FIELD_TYPE_NONE = 0,
+ D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
+ D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
+ } D3D12_VIDEO_FIELD_TYPE;
+
+typedef
+enum D3D12_VIDEO_FRAME_STEREO_FORMAT
+ {
+ D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
+ D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
+ D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
+ D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
+ D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
+ } D3D12_VIDEO_FRAME_STEREO_FORMAT;
+
+typedef struct D3D12_VIDEO_FORMAT
+ {
+ DXGI_FORMAT Format;
+ DXGI_COLOR_SPACE_TYPE ColorSpace;
+ } D3D12_VIDEO_FORMAT;
+
+typedef struct D3D12_VIDEO_SAMPLE
+ {
+ UINT Width;
+ UINT Height;
+ D3D12_VIDEO_FORMAT Format;
+ } D3D12_VIDEO_SAMPLE;
+
+typedef
+enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
+ {
+ D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
+ D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
+ } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
+
+typedef
+enum D3D12_FEATURE_VIDEO
+ {
+ D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
+ D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
+ D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
+ D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
+ D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
+ D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
+ D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
+ D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
+ D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
+ D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
+ D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
+ D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
+ D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
+ D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
+ D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
+ D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
+ D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
+ D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
+ D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
+ D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
+ D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
+ D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
+ D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
+ D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
+ D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
+ D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
+ D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
+ D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
+ D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
+ D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
+ D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
+ D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
+ D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
+ D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
+ D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
+ D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
+ D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
+ D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
+ D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
+ D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
+ D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
+ D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
+ D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
+ D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
+ D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
+ } D3D12_FEATURE_VIDEO;
+
+typedef
+enum D3D12_BITSTREAM_ENCRYPTION_TYPE
+ {
+ D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
+ } D3D12_BITSTREAM_ENCRYPTION_TYPE;
+
+typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
+ {
+ GUID DecodeProfile;
+ D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
+ D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
+ } D3D12_VIDEO_DECODE_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_DECODER_DESC
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ } D3D12_VIDEO_DECODER_DESC;
+
+typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ UINT DecodeWidth;
+ UINT DecodeHeight;
+ DXGI_FORMAT Format;
+ DXGI_RATIONAL FrameRate;
+ UINT BitRate;
+ UINT MaxDecodePictureBufferCount;
+ } D3D12_VIDEO_DECODER_HEAP_DESC;
+
+typedef struct D3D12_VIDEO_SIZE_RANGE
+ {
+ UINT MaxWidth;
+ UINT MaxHeight;
+ UINT MinWidth;
+ UINT MinHeight;
+ } D3D12_VIDEO_SIZE_RANGE;
+
+typedef
+enum D3D12_VIDEO_PROCESS_FILTER
+ {
+ D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
+ D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
+ D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
+ D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
+ D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
+ D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
+ D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
+ D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
+ } D3D12_VIDEO_PROCESS_FILTER;
+
+typedef
+enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
+ D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
+ } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
+typedef
+enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
+ } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
+typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
+ {
+ BOOL Enable;
+ FLOAT Alpha;
+ } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
+
+typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
+ {
+ BOOL Enable;
+ FLOAT Lower;
+ FLOAT Upper;
+ } D3D12_VIDEO_PROCESS_LUMA_KEY;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
+ {
+ DXGI_FORMAT Format;
+ DXGI_COLOR_SPACE_TYPE ColorSpace;
+ DXGI_RATIONAL SourceAspectRatio;
+ DXGI_RATIONAL DestinationAspectRatio;
+ DXGI_RATIONAL FrameRate;
+ D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
+ D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
+ BOOL EnableOrientation;
+ D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
+ D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
+ D3D12_VIDEO_FIELD_TYPE FieldType;
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
+ BOOL EnableAlphaBlending;
+ D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
+ UINT NumPastFrames;
+ UINT NumFutureFrames;
+ BOOL EnableAutoProcessing;
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
+
+typedef
+enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
+ {
+ D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
+ D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
+ D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
+ D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
+ } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
+ {
+ DXGI_FORMAT Format;
+ DXGI_COLOR_SPACE_TYPE ColorSpace;
+ D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
+ UINT AlphaFillModeSourceStreamIndex;
+ FLOAT BackgroundColor[ 4 ];
+ DXGI_RATIONAL FrameRate;
+ BOOL EnableStereo;
+ } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
+#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecoderHeap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
+ ID3D12VideoDecoderHeap : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecoderHeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecoderHeap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecoderHeap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecoderHeap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecoderHeap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecoderHeap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecoderHeap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecoderHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoderHeap * This);
+
+#else
+ D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoderHeap * This,
+ D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12VideoDecoderHeapVtbl;
+
+ interface ID3D12VideoDecoderHeap
+ {
+ CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecoderHeap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecoderHeap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecoderHeap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoDecoderHeap_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
+ ID3D12VideoDevice : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ END_INTERFACE
+ } ID3D12VideoDeviceVtbl;
+
+ interface ID3D12VideoDevice
+ {
+ CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
+#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecoder */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecoder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
+ ID3D12VideoDecoder : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecoderVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecoder * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecoder * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecoder * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecoder * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecoder * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecoder * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecoder * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoder * This);
+
+#else
+ D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoder * This,
+ D3D12_VIDEO_DECODER_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12VideoDecoderVtbl;
+
+ interface ID3D12VideoDecoder
+ {
+ CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecoder_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecoder_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecoder_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoDecoder_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0003 */
+/* [local] */
+
+typedef
+enum D3D12_VIDEO_DECODE_TIER
+ {
+ D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
+ D3D12_VIDEO_DECODE_TIER_1 = 1,
+ D3D12_VIDEO_DECODE_TIER_2 = 2,
+ D3D12_VIDEO_DECODE_TIER_3 = 3
+ } D3D12_VIDEO_DECODE_TIER;
+
+typedef
+enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
+ } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
+typedef
+enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
+ {
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
+ } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
+typedef
+enum D3D12_VIDEO_DECODE_STATUS
+ {
+ D3D12_VIDEO_DECODE_STATUS_OK = 0,
+ D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
+ D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
+ D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
+ D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
+ } D3D12_VIDEO_DECODE_STATUS;
+
+typedef
+enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
+ {
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
+ } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ UINT Width;
+ UINT Height;
+ DXGI_FORMAT DecodeFormat;
+ DXGI_RATIONAL FrameRate;
+ UINT BitRate;
+ D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
+ D3D12_VIDEO_DECODE_TIER DecodeTier;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
+ {
+ UINT NodeIndex;
+ UINT ProfileCount;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
+ {
+ UINT NodeIndex;
+ UINT ProfileCount;
+ _Field_size_full_(ProfileCount) GUID *pProfiles;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ UINT FormatCount;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ UINT FormatCount;
+ _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
+ {
+ BOOL IOCoherent;
+ } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
+
+typedef
+enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
+ {
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
+ } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
+
+typedef
+enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
+ {
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
+ } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
+ {
+ UINT NodeIndex;
+ GUID DecodeProfile;
+ UINT Width;
+ UINT Height;
+ DXGI_FORMAT DecodeFormat;
+ D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
+ UINT BinCount;
+ UINT CounterBitDepth;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
+
+typedef
+enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
+ } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
+typedef
+enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
+ } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
+typedef struct D3D12_VIDEO_SCALE_SUPPORT
+ {
+ D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
+ D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
+ } D3D12_VIDEO_SCALE_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ D3D12_VIDEO_SAMPLE DecodeSample;
+ D3D12_VIDEO_FORMAT OutputFormat;
+ DXGI_RATIONAL FrameRate;
+ UINT BitRate;
+ D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
+ {
+ D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
+ {
+ UINT NodeMask;
+ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
+ UINT NumInputStreamDescs;
+ const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
+
+typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
+ {
+ UINT64 Status;
+ UINT64 NumMacroblocksAffected;
+ DXGI_RATIONAL FrameRate;
+ UINT BitRate;
+ } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
+
+typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
+ {
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
+ UINT Size;
+ _Field_size_bytes_full_(Size) void *pData;
+ } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
+
+typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
+ {
+ UINT NumTexture2Ds;
+ _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
+ _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
+ _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
+ } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
+
+typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
+ {
+ ID3D12Resource *pBuffer;
+ UINT64 Offset;
+ UINT64 Size;
+ } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
+
+typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
+ {
+ BOOL Enable;
+ ID3D12Resource *pReferenceTexture2D;
+ UINT ReferenceSubresource;
+ DXGI_COLOR_SPACE_TYPE OutputColorSpace;
+ DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
+ } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
+ {
+ UINT NumFrameArguments;
+ D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
+ D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
+ D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
+ ID3D12VideoDecoderHeap *pHeap;
+ } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
+ {
+ ID3D12Resource *pOutputTexture2D;
+ UINT OutputSubresource;
+ D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
+ } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessor */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessor;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
+ ID3D12VideoProcessor : public ID3D12Pageable
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
+ UINT NumInputStreamDescs,
+ _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessorVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessor * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessor * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessor * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessor * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessor * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessor * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessor * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessor * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoProcessor * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
+ UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
+ ID3D12VideoProcessor * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
+ HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
+ ID3D12VideoProcessor * This,
+ UINT NumInputStreamDescs,
+ _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
+ ID3D12VideoProcessor * This);
+
+#else
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
+ ID3D12VideoProcessor * This,
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12VideoProcessorVtbl;
+
+ interface ID3D12VideoProcessor
+ {
+ CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessor_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessor_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessor_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoProcessor_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
+ ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
+
+#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
+ ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
+#if !defined(_WIN32)
+
+#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
+ ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
+#else
+#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0004 */
+/* [local] */
+
+typedef
+enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
+ D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
+ } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
+typedef
+enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
+ } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
+typedef
+enum D3D12_VIDEO_PROCESS_ORIENTATION
+ {
+ D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
+ D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
+ D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
+ D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
+ D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
+ D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
+ D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
+ D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
+ } D3D12_VIDEO_PROCESS_ORIENTATION;
+
+typedef
+enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
+typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
+ {
+ INT Minimum;
+ INT Maximum;
+ INT Default;
+ FLOAT Multiplier;
+ } D3D12_VIDEO_PROCESS_FILTER_RANGE;
+
+typedef
+enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
+ } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_SAMPLE InputSample;
+ D3D12_VIDEO_FIELD_TYPE InputFieldType;
+ D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
+ DXGI_RATIONAL InputFrameRate;
+ D3D12_VIDEO_FORMAT OutputFormat;
+ D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
+ DXGI_RATIONAL OutputFrameRate;
+ D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
+ D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
+ D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
+ D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
+ D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
+ } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
+ {
+ UINT NodeIndex;
+ UINT MaxInputStreams;
+ } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
+ D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
+ D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
+ DXGI_RATIONAL InputFrameRate;
+ DXGI_RATIONAL OutputFrameRate;
+ BOOL EnableAutoProcessing;
+ UINT PastFrames;
+ UINT FutureFrames;
+ } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
+
+typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
+ {
+ UINT NumPastFrames;
+ ID3D12Resource **ppPastFrames;
+ UINT *pPastSubresources;
+ UINT NumFutureFrames;
+ ID3D12Resource **ppFutureFrames;
+ UINT *pFutureSubresources;
+ } D3D12_VIDEO_PROCESS_REFERENCE_SET;
+
+typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
+ {
+ D3D12_RECT SourceRectangle;
+ D3D12_RECT DestinationRectangle;
+ D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
+ } D3D12_VIDEO_PROCESS_TRANSFORM;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
+ {
+ UINT OutputIndex;
+ UINT InputFrameOrField;
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
+ {
+ ID3D12Resource *pTexture2D;
+ UINT Subresource;
+ D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
+ {
+ D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
+ D3D12_VIDEO_PROCESS_TRANSFORM Transform;
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
+ INT FilterLevels[ 32 ];
+ D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
+ {
+ ID3D12Resource *pTexture2D;
+ UINT Subresource;
+ } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
+ {
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
+ D3D12_RECT TargetRectangle;
+ } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
+#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecodeCommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
+ ID3D12VideoDecodeCommandList : public ID3D12CommandList
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ _In_ ID3D12CommandAllocator *pAllocator) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearState( void) = 0;
+
+ virtual void STDMETHODCALLTYPE ResourceBarrier(
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
+
+ virtual void STDMETHODCALLTYPE DiscardResource(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE EndQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveQueryData(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPredication(
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMarker(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginEvent(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
+
+ virtual void STDMETHODCALLTYPE DecodeFrame(
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE WriteBufferImmediate(
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecodeCommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecodeCommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecodeCommandList * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoDecodeCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoDecodeCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoDecodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
+ void ( STDMETHODCALLTYPE *DecodeFrame )(
+ ID3D12VideoDecodeCommandList * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoDecodeCommandList * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ END_INTERFACE
+ } ID3D12VideoDecodeCommandListVtbl;
+
+ interface ID3D12VideoDecodeCommandList
+ {
+ CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecodeCommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecodeCommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoDecodeCommandList_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoDecodeCommandList_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoDecodeCommandList_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessCommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
+ ID3D12VideoProcessCommandList : public ID3D12CommandList
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ _In_ ID3D12CommandAllocator *pAllocator) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearState( void) = 0;
+
+ virtual void STDMETHODCALLTYPE ResourceBarrier(
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
+
+ virtual void STDMETHODCALLTYPE DiscardResource(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE EndQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveQueryData(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPredication(
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMarker(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginEvent(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
+
+ virtual void STDMETHODCALLTYPE ProcessFrames(
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE WriteBufferImmediate(
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessCommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessCommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessCommandList * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessCommandList * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoProcessCommandList * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoProcessCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoProcessCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoProcessCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
+ void ( STDMETHODCALLTYPE *ProcessFrames )(
+ ID3D12VideoProcessCommandList * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoProcessCommandList * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ END_INTERFACE
+ } ID3D12VideoProcessCommandListVtbl;
+
+ interface ID3D12VideoProcessCommandList
+ {
+ CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessCommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessCommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessCommandList_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoProcessCommandList_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoProcessCommandList_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoProcessCommandList_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0006 */
+/* [local] */
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
+ {
+ UINT64 Offset;
+ ID3D12Resource *pBuffer;
+ } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
+
+typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
+ {
+ BOOL Enable;
+ ID3D12Resource *pReferenceTexture2D;
+ UINT ReferenceSubresource;
+ DXGI_COLOR_SPACE_TYPE OutputColorSpace;
+ DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
+ UINT OutputWidth;
+ UINT OutputHeight;
+ } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
+ {
+ ID3D12Resource *pOutputTexture2D;
+ UINT OutputSubresource;
+ D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
+ D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
+ } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
+#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecodeCommandList1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
+ ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
+ {
+ public:
+ virtual void STDMETHODCALLTYPE DecodeFrame1(
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecodeCommandList1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecodeCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecodeCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoDecodeCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoDecodeCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoDecodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
+ void ( STDMETHODCALLTYPE *DecodeFrame )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoDecodeCommandList1 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
+ void ( STDMETHODCALLTYPE *DecodeFrame1 )(
+ ID3D12VideoDecodeCommandList1 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ END_INTERFACE
+ } ID3D12VideoDecodeCommandList1Vtbl;
+
+ interface ID3D12VideoDecodeCommandList1
+ {
+ CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecodeCommandList1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecodeCommandList1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoDecodeCommandList1_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoDecodeCommandList1_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoDecodeCommandList1_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0007 */
+/* [local] */
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
+ {
+ D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
+ D3D12_VIDEO_PROCESS_TRANSFORM Transform;
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
+ D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
+ INT FilterLevels[ 32 ];
+ D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
+ D3D12_VIDEO_FIELD_TYPE FieldType;
+ } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessCommandList1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
+ ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
+ {
+ public:
+ virtual void STDMETHODCALLTYPE ProcessFrames1(
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessCommandList1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoProcessCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoProcessCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoProcessCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
+ void ( STDMETHODCALLTYPE *ProcessFrames )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoProcessCommandList1 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
+ void ( STDMETHODCALLTYPE *ProcessFrames1 )(
+ ID3D12VideoProcessCommandList1 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
+
+ END_INTERFACE
+ } ID3D12VideoProcessCommandList1Vtbl;
+
+ interface ID3D12VideoProcessCommandList1
+ {
+ CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessCommandList1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessCommandList1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoProcessCommandList1_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoProcessCommandList1_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoProcessCommandList1_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0008 */
+/* [local] */
+
+typedef
+enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
+ {
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
+ } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
+
+typedef
+enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
+ {
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
+ } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
+typedef
+enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
+ {
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
+ } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
+
+typedef
+enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
+ {
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
+ } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
+ {
+ UINT NodeIndex;
+ BOOL VideoDecodeSupport;
+ BOOL VideoProcessSupport;
+ BOOL VideoEncodeSupport;
+ } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
+ {
+ UINT NodeIndex;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
+ D3D12_VIDEO_SIZE_RANGE SizeRange;
+ } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
+ {
+ UINT NodeIndex;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
+ D3D12_VIDEO_SIZE_RANGE SizeRange;
+ BOOL Protected;
+ UINT64 MotionVectorHeapMemoryPoolL0Size;
+ UINT64 MotionVectorHeapMemoryPoolL1Size;
+ UINT64 MotionEstimatorMemoryPoolL0Size;
+ UINT64 MotionEstimatorMemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
+ {
+ UINT NodeMask;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
+ D3D12_VIDEO_SIZE_RANGE SizeRange;
+ } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
+#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoMotionEstimator */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
+ ID3D12VideoMotionEstimator : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoMotionEstimatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoMotionEstimator * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoMotionEstimator * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoMotionEstimator * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoMotionEstimator * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoMotionEstimator * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoMotionEstimator * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoMotionEstimator * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoMotionEstimator * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoMotionEstimator * This);
+
+#else
+ D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoMotionEstimator * This,
+ D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoMotionEstimator * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoMotionEstimatorVtbl;
+
+ interface ID3D12VideoMotionEstimator
+ {
+ CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoMotionEstimator_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoMotionEstimator_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoMotionEstimator_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoMotionEstimator_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0009 */
+/* [local] */
+
+typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
+ {
+ UINT NodeMask;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
+ D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
+ D3D12_VIDEO_SIZE_RANGE SizeRange;
+ } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
+#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoMotionVectorHeap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
+ ID3D12VideoMotionVectorHeap : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoMotionVectorHeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoMotionVectorHeap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoMotionVectorHeap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoMotionVectorHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoMotionVectorHeap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoMotionVectorHeap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoMotionVectorHeap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoMotionVectorHeap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoMotionVectorHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoMotionVectorHeap * This);
+
+#else
+ D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoMotionVectorHeap * This,
+ D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoMotionVectorHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoMotionVectorHeapVtbl;
+
+ interface ID3D12VideoMotionVectorHeap
+ {
+ CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoMotionVectorHeap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoMotionVectorHeap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
+ ID3D12VideoDevice1 : public ID3D12VideoDevice
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDevice1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice1 * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice1 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice1 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice1 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
+ ID3D12VideoDevice1 * This,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
+ ID3D12VideoDevice1 * This,
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap);
+
+ END_INTERFACE
+ } ID3D12VideoDevice1Vtbl;
+
+ interface ID3D12VideoDevice1
+ {
+ CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+
+#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
+ ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
+
+#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
+ ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0011 */
+/* [local] */
+
+typedef struct D3D12_RESOURCE_COORDINATE
+ {
+ UINT64 X;
+ UINT Y;
+ UINT Z;
+ UINT SubresourceIndex;
+ } D3D12_RESOURCE_COORDINATE;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
+ {
+ ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
+ } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
+ {
+ ID3D12Resource *pInputTexture2D;
+ UINT InputSubresourceIndex;
+ ID3D12Resource *pReferenceTexture2D;
+ UINT ReferenceSubresourceIndex;
+ ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
+ } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
+
+typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
+ {
+ ID3D12Resource *pMotionVectorTexture2D;
+ D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
+ } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
+
+typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
+ {
+ ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
+ UINT PixelWidth;
+ UINT PixelHeight;
+ } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
+ ID3D12VideoEncodeCommandList : public ID3D12CommandList
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ _In_ ID3D12CommandAllocator *pAllocator) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearState( void) = 0;
+
+ virtual void STDMETHODCALLTYPE ResourceBarrier(
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
+
+ virtual void STDMETHODCALLTYPE DiscardResource(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE EndQuery(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveQueryData(
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPredication(
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation) = 0;
+
+ virtual void STDMETHODCALLTYPE SetMarker(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE BeginEvent(
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size) = 0;
+
+ virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
+
+ virtual void STDMETHODCALLTYPE EstimateMotion(
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE WriteBufferImmediate(
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
+
+ virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandListVtbl;
+
+ interface ID3D12VideoEncodeCommandList
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0012 */
+/* [local] */
+
+typedef
+enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
+ } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+ D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
+ {
+ D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
+ BOOL Protected;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
+ {
+ UINT NodeMask;
+ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
+ UINT NumInputStreamDescs;
+ const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
+ BOOL Protected;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
+
+typedef
+enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
+ {
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
+ } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
+
+typedef
+enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
+ {
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
+ } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
+
+typedef
+enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
+ {
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
+ } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
+ {
+ UINT NodeIndex;
+ UINT CommandCount;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
+ {
+ GUID CommandId;
+ LPCWSTR Name;
+ D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
+ } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
+ {
+ UINT NodeIndex;
+ UINT CommandCount;
+ _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
+ {
+ GUID CommandId;
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
+ UINT ParameterCount;
+ UINT ParameterPacking;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
+ {
+ LPCWSTR Name;
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
+ } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
+ {
+ GUID CommandId;
+ D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
+ UINT ParameterCount;
+ _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
+ {
+ UINT NodeIndex;
+ GUID CommandId;
+ _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
+ SIZE_T InputDataSizeInBytes;
+ _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
+ SIZE_T OutputDataSizeInBytes;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
+ {
+ UINT NodeIndex;
+ GUID CommandId;
+ _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
+ SIZE_T CreationParametersSizeInBytes;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
+ {
+ UINT NodeMask;
+ GUID CommandId;
+ } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
+#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecoder1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecoder1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
+ ID3D12VideoDecoder1 : public ID3D12VideoDecoder
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecoder1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecoder1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecoder1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecoder1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecoder1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecoder1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecoder1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecoder1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecoder1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoder1 * This);
+
+#else
+ D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoder1 * This,
+ D3D12_VIDEO_DECODER_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoDecoder1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoDecoder1Vtbl;
+
+ interface ID3D12VideoDecoder1
+ {
+ CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecoder1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecoder1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecoder1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoDecoder1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+
+#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
+#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecoderHeap1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
+ ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecoderHeap1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecoderHeap1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecoderHeap1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoderHeap1 * This);
+
+#else
+ D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoDecoderHeap1 * This,
+ D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoDecoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoDecoderHeap1Vtbl;
+
+ interface ID3D12VideoDecoderHeap1
+ {
+ CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecoderHeap1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecoderHeap1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoDecoderHeap1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+
+#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessor1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessor1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
+ ID3D12VideoProcessor1 : public ID3D12VideoProcessor
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessor1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessor1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessor1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessor1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessor1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessor1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessor1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessor1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessor1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoProcessor1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
+ UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
+ ID3D12VideoProcessor1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
+ HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
+ ID3D12VideoProcessor1 * This,
+ UINT NumInputStreamDescs,
+ _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
+ ID3D12VideoProcessor1 * This);
+
+#else
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
+ ID3D12VideoProcessor1 * This,
+ D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoProcessor1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoProcessor1Vtbl;
+
+ interface ID3D12VideoProcessor1
+ {
+ CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessor1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessor1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessor1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoProcessor1_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
+ ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
+
+#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
+ ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
+#if !defined(_WIN32)
+
+#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
+ ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
+#else
+#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
+#endif
+
+
+#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
+#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoExtensionCommand */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
+ ID3D12VideoExtensionCommand : public ID3D12Pageable
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
+#else
+ virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
+ D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
+#endif
+
+ virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoExtensionCommandVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoExtensionCommand * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoExtensionCommand * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoExtensionCommand * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoExtensionCommand * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoExtensionCommand * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoExtensionCommand * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoExtensionCommand * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoExtensionCommand * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
+#if !defined(_WIN32)
+ D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoExtensionCommand * This);
+
+#else
+ D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12VideoExtensionCommand * This,
+ D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
+ ID3D12VideoExtensionCommand * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppProtectedSession);
+
+ END_INTERFACE
+ } ID3D12VideoExtensionCommandVtbl;
+
+ interface ID3D12VideoExtensionCommand
+ {
+ CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoExtensionCommand_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoExtensionCommand_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoExtensionCommand_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#if !defined(_WIN32)
+
+#define ID3D12VideoExtensionCommand_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
+ ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
+ ID3D12VideoDevice2 : public ID3D12VideoDevice1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
+ _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
+ _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
+ SIZE_T CreationParametersDataSizeInBytes,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes,
+ _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
+ SIZE_T OutputDataSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDevice2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice2 * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice2 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
+ ID3D12VideoDevice2 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
+ ID3D12VideoDevice2 * This,
+ _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
+ _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
+ SIZE_T CreationParametersDataSizeInBytes,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoExtensionCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDevice2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes,
+ _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
+ SIZE_T OutputDataSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12VideoDevice2Vtbl;
+
+ interface ID3D12VideoDevice2
+ {
+ CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+
+#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
+ ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
+
+#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
+ ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
+
+
+#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
+
+#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
+ ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
+
+#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
+#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecodeCommandList2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
+ ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
+
+ virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecodeCommandList2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecodeCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecodeCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoDecodeCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoDecodeCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoDecodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
+ void ( STDMETHODCALLTYPE *DecodeFrame )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoDecodeCommandList2 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
+ void ( STDMETHODCALLTYPE *DecodeFrame1 )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDecodeCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12VideoDecodeCommandList2Vtbl;
+
+ interface ID3D12VideoDecodeCommandList2
+ {
+ CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecodeCommandList2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecodeCommandList2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoDecodeCommandList2_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoDecodeCommandList2_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoDecodeCommandList2_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
+
+
+#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
+#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDecodeCommandList3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
+ ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Barrier(
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDecodeCommandList3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDecodeCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoDecodeCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoDecodeCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoDecodeCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoDecodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
+ void ( STDMETHODCALLTYPE *DecodeFrame )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoDecodeCommandList3 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
+ void ( STDMETHODCALLTYPE *DecodeFrame1 )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12VideoDecoder *pDecoder,
+ _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
+ _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDecodeCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12VideoDecodeCommandList3 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ END_INTERFACE
+ } ID3D12VideoDecodeCommandList3Vtbl;
+
+ interface ID3D12VideoDecodeCommandList3
+ {
+ CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDecodeCommandList3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDecodeCommandList3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoDecodeCommandList3_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoDecodeCommandList3_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoDecodeCommandList3_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
+
+
+#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessCommandList2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
+ ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
+
+ virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessCommandList2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoProcessCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoProcessCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoProcessCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
+ void ( STDMETHODCALLTYPE *ProcessFrames )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoProcessCommandList2 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
+ void ( STDMETHODCALLTYPE *ProcessFrames1 )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoProcessCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12VideoProcessCommandList2Vtbl;
+
+ interface ID3D12VideoProcessCommandList2
+ {
+ CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessCommandList2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessCommandList2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoProcessCommandList2_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoProcessCommandList2_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoProcessCommandList2_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList2_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+
+#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
+#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoProcessCommandList3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
+ ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Barrier(
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoProcessCommandList3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoProcessCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoProcessCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoProcessCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoProcessCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoProcessCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
+ void ( STDMETHODCALLTYPE *ProcessFrames )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoProcessCommandList3 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
+ void ( STDMETHODCALLTYPE *ProcessFrames1 )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12VideoProcessor *pVideoProcessor,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+ UINT NumInputStreams,
+ _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoProcessCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12VideoProcessCommandList3 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ END_INTERFACE
+ } ID3D12VideoProcessCommandList3Vtbl;
+
+ interface ID3D12VideoProcessCommandList3
+ {
+ CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoProcessCommandList3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoProcessCommandList3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoProcessCommandList3_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoProcessCommandList3_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoProcessCommandList3_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoProcessCommandList3_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
+ ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
+
+
+#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
+ ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
+ {
+ public:
+ virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes) = 0;
+
+ virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandList1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList1 * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList1 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoEncodeCommandList1 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandList1Vtbl;
+
+ interface ID3D12VideoEncodeCommandList1
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList1_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList1_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList1_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0022 */
+/* [local] */
+
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_PROFILE
+ {
+ D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
+ D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
+ D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
+ } D3D12_VIDEO_ENCODER_AV1_PROFILE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_LEVELS
+ {
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
+ D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
+ } D3D12_VIDEO_ENCODER_AV1_LEVELS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_TIER
+ {
+ D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
+ D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
+ } D3D12_VIDEO_ENCODER_AV1_TIER;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
+ {
+ D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
+ D3D12_VIDEO_ENCODER_AV1_TIER Tier;
+ } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
+ } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
+ {
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
+ } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
+ } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
+ {
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
+ } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
+ } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
+ {
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
+ {
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
+ {
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
+ } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
+ {
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
+ } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
+ } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
+ {
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
+ } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
+ } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
+ } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
+ {
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
+ D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
+ UINT MaxTemporalLayers;
+ UINT MaxSpatialLayers;
+ } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
+ {
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
+ } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
+ } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
+ {
+ D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
+ D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
+ } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
+ {
+ D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
+ UINT MaxUniqueReferencesPerFrame;
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
+ } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
+ {
+ D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
+ UINT OrderHintBitsMinus1;
+ } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
+ {
+ UINT IntraDistance;
+ UINT InterFramePeriod;
+ } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
+ {
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
+ INT TransformationMatrix[ 8 ];
+ BOOL InvalidAffineSet;
+ } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
+ {
+ UINT ReconstructedPictureResourceIndex;
+ UINT TemporalLayerIndexPlus1;
+ UINT SpatialLayerIndexPlus1;
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
+ UINT OrderHint;
+ UINT PictureIndex;
+ } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
+ } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
+ {
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
+ } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
+ {
+ UINT64 EnabledFeatures;
+ INT64 FeatureValue[ 8 ];
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
+ {
+ UINT64 UpdateMap;
+ UINT64 TemporalUpdate;
+ UINT64 UpdateData;
+ UINT64 NumSegments;
+ D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
+ {
+ UINT SegmentsMapByteSize;
+ UINT8 *pSegmentsMap;
+ } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
+ {
+ UINT64 LoopFilterLevel[ 2 ];
+ UINT64 LoopFilterLevelU;
+ UINT64 LoopFilterLevelV;
+ UINT64 LoopFilterSharpnessLevel;
+ UINT64 LoopFilterDeltaEnabled;
+ UINT64 UpdateRefDelta;
+ INT64 RefDeltas[ 8 ];
+ UINT64 UpdateModeDelta;
+ INT64 ModeDeltas[ 2 ];
+ } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
+ {
+ UINT64 DeltaLFPresent;
+ UINT64 DeltaLFMulti;
+ UINT64 DeltaLFRes;
+ } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
+ {
+ UINT64 BaseQIndex;
+ INT64 YDCDeltaQ;
+ INT64 UDCDeltaQ;
+ INT64 UACDeltaQ;
+ INT64 VDCDeltaQ;
+ INT64 VACDeltaQ;
+ UINT64 UsingQMatrix;
+ UINT64 QMY;
+ UINT64 QMU;
+ UINT64 QMV;
+ } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
+ {
+ UINT64 DeltaQPresent;
+ UINT64 DeltaQRes;
+ } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
+ {
+ UINT64 CdefBits;
+ UINT64 CdefDampingMinus3;
+ UINT64 CdefYPriStrength[ 8 ];
+ UINT64 CdefUVPriStrength[ 8 ];
+ UINT64 CdefYSecStrength[ 8 ];
+ UINT64 CdefUVSecStrength[ 8 ];
+ } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
+ {
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
+ D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
+ D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
+ D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
+ D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
+ UINT SuperResDenominator;
+ UINT OrderHint;
+ UINT PictureIndex;
+ UINT TemporalLayerIndexPlus1;
+ UINT SpatialLayerIndexPlus1;
+ D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
+ UINT ReferenceIndices[ 7 ];
+ UINT PrimaryRefFrame;
+ UINT RefreshFrameFlags;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
+ D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
+ } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
+ {
+ UINT64 RowCount;
+ UINT64 ColCount;
+ UINT64 RowHeights[ 64 ];
+ UINT64 ColWidths[ 64 ];
+ UINT64 ContextUpdateTileId;
+ } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
+ {
+ UINT64 CompoundPredictionType;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
+ D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
+ D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
+ UINT64 PrimaryRefFrame;
+ UINT64 ReferenceIndices[ 7 ];
+ } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
+
+typedef
+enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
+ {
+ UINT ConstantQP_FullIntracodedFrame;
+ UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
+ UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
+ {
+ UINT ConstantQP_FullIntracodedFrame;
+ UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
+ UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
+ UINT QualityVsSpeed;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetBitRate;
+ UINT64 VBVCapacity;
+ UINT64 InitialVBVFullness;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetBitRate;
+ UINT64 VBVCapacity;
+ UINT64 InitialVBVFullness;
+ UINT QualityVsSpeed;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetAvgBitRate;
+ UINT64 PeakBitRate;
+ UINT64 VBVCapacity;
+ UINT64 InitialVBVFullness;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetAvgBitRate;
+ UINT64 PeakBitRate;
+ UINT64 VBVCapacity;
+ UINT64 InitialVBVFullness;
+ UINT QualityVsSpeed;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetAvgBitRate;
+ UINT64 PeakBitRate;
+ UINT ConstantQualityTarget;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
+ {
+ UINT InitialQP;
+ UINT MinQP;
+ UINT MaxQP;
+ UINT64 MaxFrameBitSize;
+ UINT64 TargetAvgBitRate;
+ UINT64 PeakBitRate;
+ UINT ConstantQualityTarget;
+ UINT64 VBVCapacity;
+ UINT64 InitialVBVFullness;
+ UINT QualityVsSpeed;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
+ {
+ UINT QualityVsSpeed;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
+ {
+ UINT DataSize;
+ union
+ {
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
+ const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
+ } ;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
+ DXGI_RATIONAL TargetFrameRate;
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC
+ {
+ D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
+ D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
+ D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
+ } D3D12_VIDEO_ENCODER_CODEC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_PROFILE_H264
+ {
+ D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
+ D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
+ D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
+ } D3D12_VIDEO_ENCODER_PROFILE_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
+ {
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
+ } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
+ D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
+ } ;
+ } D3D12_VIDEO_ENCODER_PROFILE_DESC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_LEVELS_H264
+ {
+ D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
+ D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
+ } D3D12_VIDEO_ENCODER_LEVELS_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_TIER_HEVC
+ {
+ D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
+ D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
+ } D3D12_VIDEO_ENCODER_TIER_HEVC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
+ {
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
+ } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
+ {
+ D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
+ D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
+ } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
+ D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
+ D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
+ } ;
+ } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ BOOL IsSupported;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
+ {
+ UINT Width;
+ UINT Height;
+ } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
+ {
+ UINT WidthRatio;
+ UINT HeightRatio;
+ } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ UINT ResolutionRatiosCount;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ UINT ResolutionRatiosCount;
+ BOOL IsSupported;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
+ UINT ResolutionWidthMultipleRequirement;
+ UINT ResolutionHeightMultipleRequirement;
+ _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ DXGI_FORMAT Format;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
+ {
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
+ } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
+ {
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
+ } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
+ } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
+ {
+ BOOL Use128SuperBlocks;
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
+ UINT MinTileRows;
+ UINT MaxTileRows;
+ UINT MinTileCols;
+ UINT MaxTileCols;
+ UINT MinTileWidth;
+ UINT MaxTileWidth;
+ UINT MinTileArea;
+ UINT MaxTileArea;
+ UINT TileSizeBytesMinus1;
+ } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
+ } ;
+ } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
+ BOOL IsSupported;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
+
+typedef
+enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
+ } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
+ UINT ResolutionsListCount;
+ _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ } D3D12_VIDEO_ENCODER_HEAP_DESC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
+ {
+ D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
+ BOOL IsSupported;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES ) ,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING )
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+ UCHAR max_transform_hierarchy_depth_inter;
+ UCHAR max_transform_hierarchy_depth_intra;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+ UCHAR max_transform_hierarchy_depth_inter;
+ UCHAR max_transform_hierarchy_depth_intra;
+ UINT allowed_diff_cu_chroma_qp_offset_depth_values;
+ UINT allowed_log2_sao_offset_scale_luma_values;
+ UINT allowed_log2_sao_offset_scale_chroma_values;
+ UINT allowed_log2_max_transform_skip_block_size_minus2_values;
+ UINT allowed_chroma_qp_offset_list_len_minus1_values;
+ UINT allowed_cb_qp_offset_list_values[ 6 ];
+ UINT allowed_cr_qp_offset_list_values[ 6 ];
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
+ D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
+ } ;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ BOOL IsSupported;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
+ {
+ UINT MaxL0ReferencesForP;
+ UINT MaxL0ReferencesForB;
+ UINT MaxL1ReferencesForB;
+ UINT MaxLongTermReferences;
+ UINT MaxDPBCapacity;
+ } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
+ {
+ UINT MaxL0ReferencesForP;
+ UINT MaxL0ReferencesForB;
+ UINT MaxL1ReferencesForB;
+ UINT MaxLongTermReferences;
+ UINT MaxDPBCapacity;
+ } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
+ D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
+ D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
+ } ;
+ } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ BOOL IsSupported;
+ D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
+ } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+ UCHAR max_transform_hierarchy_depth_inter;
+ UCHAR max_transform_hierarchy_depth_intra;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
+ D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
+ } ;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
+ {
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
+ UINT IntraRefreshDuration;
+ } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
+
+typedef
+enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
+ {
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
+ } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
+ {
+ UINT MaxSubregionsNumber;
+ UINT MaxIntraRefreshFrameDuration;
+ UINT SubregionBlockPixelsSize;
+ UINT QPMapRegionPixelsSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
+ } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
+ {
+ UINT GOPLength;
+ UINT PPicturePeriod;
+ UCHAR pic_order_cnt_type;
+ UCHAR log2_max_frame_num_minus4;
+ UCHAR log2_max_pic_order_cnt_lsb_minus4;
+ } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
+ {
+ UINT GOPLength;
+ UINT PPicturePeriod;
+ UCHAR log2_max_pic_order_cnt_lsb_minus4;
+ } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
+ D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
+ } ;
+ } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ UINT ResolutionsListCount;
+ const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT MaxReferenceFramesInDPB;
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
+ _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
+ {
+ union
+ {
+ UINT MaxBytesPerSlice;
+ UINT NumberOfCodingUnitsPerSlice;
+ UINT NumberOfRowsPerSlice;
+ UINT NumberOfSlicesPerFrame;
+ } ;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
+ {
+ UINT DataSize;
+ union
+ {
+ const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
+ const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
+ const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
+ } ;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ UINT ResolutionsListCount;
+ const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT MaxReferenceFramesInDPB;
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
+ _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ UINT MaxQualityVsSpeed;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
+ BOOL IsSupported;
+ UINT CompressedBitstreamBufferAccessAlignment;
+ UINT EncoderMetadataBufferAccessAlignment;
+ UINT MaxEncoderOutputMetadataBufferSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_FLAG_NONE = 0
+ } D3D12_VIDEO_ENCODER_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_DESC
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_ENCODER_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
+ } D3D12_VIDEO_ENCODER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
+#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncoder */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncoder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
+ ID3D12VideoEncoder : public ID3D12Pageable
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
+
+ virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
+
+ virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
+ _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
+
+ virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
+
+ virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncoderVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncoder * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncoder * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncoder * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncoder * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncoder * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncoder * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
+ D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
+ D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
+ ID3D12VideoEncoder * This,
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
+ ID3D12VideoEncoder * This,
+ _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
+ DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
+ ID3D12VideoEncoder * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
+ D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
+ ID3D12VideoEncoder * This);
+
+ END_INTERFACE
+ } ID3D12VideoEncoderVtbl;
+
+ interface ID3D12VideoEncoder
+ {
+ CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncoder_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncoder_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncoder_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoEncoder_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoEncoder_GetEncoderFlags(This) \
+ ( (This)->lpVtbl -> GetEncoderFlags(This) )
+
+#define ID3D12VideoEncoder_GetCodec(This) \
+ ( (This)->lpVtbl -> GetCodec(This) )
+
+#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
+ ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
+
+#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
+ ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
+
+#define ID3D12VideoEncoder_GetInputFormat(This) \
+ ( (This)->lpVtbl -> GetInputFormat(This) )
+
+#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
+ ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
+#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncoderHeap */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
+ ID3D12VideoEncoderHeap : public ID3D12Pageable
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
+
+ virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
+
+ virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
+ _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
+ const UINT ResolutionsListCount,
+ _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncoderHeapVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncoderHeap * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncoderHeap * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncoderHeap * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncoderHeap * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncoderHeap * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncoderHeap * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
+ D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
+ ID3D12VideoEncoderHeap * This,
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
+ ID3D12VideoEncoderHeap * This,
+ _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
+ UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
+ ID3D12VideoEncoderHeap * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
+ HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
+ ID3D12VideoEncoderHeap * This,
+ const UINT ResolutionsListCount,
+ _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
+
+ END_INTERFACE
+ } ID3D12VideoEncoderHeapVtbl;
+
+ interface ID3D12VideoEncoderHeap
+ {
+ CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncoderHeap_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncoderHeap_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncoderHeap_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
+ ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
+
+#define ID3D12VideoEncoderHeap_GetCodec(This) \
+ ( (This)->lpVtbl -> GetCodec(This) )
+
+#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
+ ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
+
+#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
+ ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
+
+#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
+ ( (This)->lpVtbl -> GetResolutionListCount(This) )
+
+#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
+ ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
+ ID3D12VideoDevice3 : public ID3D12VideoDevice2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
+ _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoder) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDevice3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice3 * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice3 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
+ ID3D12VideoDevice3 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
+ _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
+ SIZE_T CreationParametersDataSizeInBytes,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoExtensionCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDevice3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes,
+ _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
+ SIZE_T OutputDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
+ ID3D12VideoDevice3 * This,
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap);
+
+ END_INTERFACE
+ } ID3D12VideoDevice3Vtbl;
+
+ interface ID3D12VideoDevice3
+ {
+ CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+
+#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
+ ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
+
+#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
+ ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
+
+
+#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
+
+#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
+ ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
+
+#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
+
+
+#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
+ ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
+
+#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0025 */
+/* [local] */
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
+ {
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
+ } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
+
+typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
+ {
+ UINT ReconstructedPictureResourceIndex;
+ BOOL IsLongTermReference;
+ UINT LongTermPictureIdx;
+ UINT PictureOrderCountNumber;
+ UINT FrameDecodingOrderNumber;
+ UINT TemporalLayerIndex;
+ } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
+ {
+ UCHAR memory_management_control_operation;
+ UINT difference_of_pic_nums_minus1;
+ UINT long_term_pic_num;
+ UINT long_term_frame_idx;
+ UINT max_long_term_frame_idx_plus1;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
+ {
+ UCHAR modification_of_pic_nums_idc;
+ UINT abs_diff_pic_num_minus1;
+ UINT long_term_pic_num;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
+ UINT pic_parameter_set_id;
+ UINT idr_pic_id;
+ UINT PictureOrderCountNumber;
+ UINT FrameDecodingOrderNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
+ UCHAR adaptive_ref_pic_marking_mode_flag;
+ UINT RefPicMarkingOperationsCommandsCount;
+ _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
+ {
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
+ } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
+ {
+ UINT ReconstructedPictureResourceIndex;
+ BOOL IsRefUsedByCurrentPic;
+ BOOL IsLongTermReference;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+ UINT slice_pic_parameter_set_id;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+ UINT slice_pic_parameter_set_id;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ UCHAR diff_cu_chroma_qp_offset_depth;
+ UCHAR log2_sao_offset_scale_luma;
+ UCHAR log2_sao_offset_scale_chroma;
+ UCHAR log2_max_transform_skip_block_size_minus2;
+ UCHAR chroma_qp_offset_list_len_minus1;
+ CHAR cb_qp_offset_list[ 6 ];
+ CHAR cr_qp_offset_list[ 6 ];
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
+ } ;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
+
+typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
+ {
+ UINT NumTexture2Ds;
+ _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
+ _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
+ } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
+
+typedef
+enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
+ {
+ UINT IntraRefreshFrameIndex;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
+ D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
+
+typedef
+enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
+ } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+ } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
+ ID3D12Resource *pInputFrame;
+ UINT InputFrameSubresource;
+ UINT CurrentFrameBitstreamMetadataSize;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
+ {
+ ID3D12Resource *pBuffer;
+ UINT64 FrameStartOffset;
+ } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
+
+typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
+ {
+ ID3D12Resource *pReconstructedPicture;
+ UINT ReconstructedPictureSubresource;
+ } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
+ {
+ UINT64 bSize;
+ UINT64 bStartOffset;
+ UINT64 bHeaderSize;
+ } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
+
+typedef
+enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
+ D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
+ } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
+typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
+ {
+ UINT64 AverageQP;
+ UINT64 IntraCodingUnitsCount;
+ UINT64 InterCodingUnitsCount;
+ UINT64 SkipCodingUnitsCount;
+ UINT64 AverageMotionEstimationXDirection;
+ UINT64 AverageMotionEstimationYDirection;
+ } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
+
+typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
+ {
+ UINT64 EncodeErrorFlags;
+ D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
+ UINT64 EncodedBitstreamWrittenBytesCount;
+ UINT64 WrittenSubregionsCount;
+ } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
+ {
+ ID3D12Resource *pBuffer;
+ UINT64 Offset;
+ } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
+ DXGI_FORMAT EncoderInputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
+ D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
+ ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EncodeFrame(
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandList2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList2 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList2 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList2 * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList2 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
+ void ( STDMETHODCALLTYPE *EncodeFrame )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
+ ID3D12VideoEncodeCommandList2 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandList2Vtbl;
+
+ interface ID3D12VideoEncodeCommandList2
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList2_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList2_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList2_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList3 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
+ ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Barrier(
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandList3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList3 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList3 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList3 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList3 * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList3 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
+ void ( STDMETHODCALLTYPE *EncodeFrame )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
+ ID3D12VideoEncodeCommandList3 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12VideoEncodeCommandList3 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandList3Vtbl;
+
+ interface ID3D12VideoEncodeCommandList3
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList3_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList3_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList3_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList3_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList3_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
+
+
+#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0027 */
+/* [local] */
+
+typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
+ UINT ResolutionsListCount;
+ _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT Pow2DownscaleFactor;
+ } D3D12_VIDEO_ENCODER_HEAP_DESC1;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
+#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncoderHeap1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
+ ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncoderHeap1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
+ D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
+ ID3D12VideoEncoderHeap1 * This,
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
+ ID3D12VideoEncoderHeap1 * This,
+ _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
+ UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
+ HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
+ ID3D12VideoEncoderHeap1 * This,
+ const UINT ResolutionsListCount,
+ _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
+ UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ END_INTERFACE
+ } ID3D12VideoEncoderHeap1Vtbl;
+
+ interface ID3D12VideoEncoderHeap1
+ {
+ CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncoderHeap1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncoderHeap1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
+ ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
+
+#define ID3D12VideoEncoderHeap1_GetCodec(This) \
+ ( (This)->lpVtbl -> GetCodec(This) )
+
+#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
+ ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
+
+#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
+ ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
+
+#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
+ ( (This)->lpVtbl -> GetResolutionListCount(This) )
+
+#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
+ ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
+
+
+#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
+ ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
+ ID3D12VideoDevice4 : public ID3D12VideoDevice3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDevice4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice4 * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice4 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
+ ID3D12VideoDevice4 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
+ _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
+ SIZE_T CreationParametersDataSizeInBytes,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoExtensionCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDevice4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes,
+ _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
+ SIZE_T OutputDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap);
+
+ END_INTERFACE
+ } ID3D12VideoDevice4Vtbl;
+
+ interface ID3D12VideoDevice4
+ {
+ CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+
+#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
+ ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
+
+#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
+ ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
+
+
+#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
+
+#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
+ ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
+
+#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
+
+
+#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
+ ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
+
+#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
+
+
+#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0029 */
+/* [local] */
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
+ {
+ D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
+ BOOL IsSupported;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
+
+typedef
+enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
+ } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
+ BOOL IsSupported;
+ UINT CompressedBitstreamBufferAccessAlignment;
+ UINT EncoderMetadataBufferAccessAlignment;
+ UINT MaxEncoderOutputMetadataBufferSize;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
+ UINT EncoderOutputMetadataFramePSNRComponentsNumber;
+ UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
+ UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
+ {
+ float PSNRY;
+ float PSNRU;
+ float PSNRV;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
+ {
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
+
+typedef
+enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ BOOL IsSupported;
+ UINT MapSourcePreferenceRanking;
+ UINT BlockSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
+ {
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
+ } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
+ } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
+typedef
+enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
+ } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ BOOL BidirectionalRefFrameEnabled;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
+ UINT MaxMotionHints;
+ UINT MinDeviation;
+ UINT MaxDeviation;
+ UINT MapSourcePreferenceRanking;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
+ BOOL IsSupported;
+ UINT64 MaxResolvedBufferAllocationSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
+
+typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
+ {
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ BOOL BidirectionalRefFrameEnabled;
+ } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
+ {
+ UINT MaxMotionHints;
+ UINT MinDeviation;
+ UINT MaxDeviation;
+ UINT MapSourcePreferenceRanking;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
+
+typedef
+enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
+ UINT Pow2DownscaleFactor;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
+ {
+ UINT MaxSubregionsNumber;
+ UINT MaxIntraRefreshFrameDuration;
+ UINT SubregionBlockPixelsSize;
+ UINT QPMapRegionPixelsSize;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
+ {
+ BOOL Enabled;
+ UINT Pow2DownscaleFactor;
+ } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ UINT ResolutionsListCount;
+ const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT MaxReferenceFramesInDPB;
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
+ _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ UINT MaxQualityVsSpeed;
+ D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
+ D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
+ {
+ BOOL FullFrameIdentical;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ UINT NumDirtyRects;
+ _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
+ UINT SourceDPBFrameReference;
+ } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ union
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
+ } ;
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
+ {
+ ID3D12Resource *pOpaqueQuantizationMap;
+ } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ UINT SearchDeviationLimit;
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
+ {
+ POINT SourcePoint;
+ RECT DestRect;
+ } D3D12_VIDEO_ENCODER_MOVE_RECT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
+ } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
+
+typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
+ {
+ UINT NumMoveRegions;
+ _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
+ UINT SourceDPBFrameReference;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
+ } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ union
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
+ } ;
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+ UINT slice_pic_parameter_set_id;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ UCHAR diff_cu_chroma_qp_offset_depth;
+ UCHAR log2_sao_offset_scale_luma;
+ UCHAR log2_sao_offset_scale_chroma;
+ UCHAR log2_max_transform_skip_block_size_minus2;
+ UCHAR chroma_qp_offset_list_len_minus1;
+ CHAR cb_qp_offset_list[ 6 ];
+ CHAR cr_qp_offset_list[ 6 ];
+ UINT num_ref_idx_l0_active_minus1;
+ UINT num_ref_idx_l1_active_minus1;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
+ } ;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
+ {
+ ID3D12Resource *pDownscaledFrame;
+ UINT64 Subresource;
+ D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
+ } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
+ {
+ UINT IntraRefreshFrameIndex;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
+ D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
+ D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
+ D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
+ ID3D12Resource *pInputFrame;
+ UINT InputFrameSubresource;
+ UINT CurrentFrameBitstreamMetadataSize;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
+
+typedef
+enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
+ {
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
+ } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
+ {
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
+ UINT ExpectedSubregionCount;
+ UINT64 *pSubregionBitstreamsBaseOffsets;
+ ID3D12Resource **ppSubregionBitstreams;
+ ID3D12Resource **ppSubregionSizes;
+ ID3D12Resource **ppSubregionOffsets;
+ ID3D12Fence **ppSubregionFences;
+ UINT64 *pSubregionFenceValues;
+ } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
+
+typedef
+enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
+ } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
+ union
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
+ } ;
+ } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
+ D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
+ D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
+ DXGI_FORMAT EncoderInputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
+ ID3D12Resource *pOutputQPMap;
+ ID3D12Resource *pOutputSATDMap;
+ ID3D12Resource *pOutputBitAllocationMap;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
+ {
+ ID3D12Resource *pQuantizationMap;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
+ {
+ BOOL FullFrameIdentical;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ ID3D12Resource *pDirtyRegionsMap;
+ UINT SourceDPBFrameReference;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
+ UINT NumHintsPerPixel;
+ _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
+ _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
+ _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
+ _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
+ union
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
+ } ;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
+ } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
+ ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EncodeFrame1(
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap1 *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandList4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList4 * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
+ void ( STDMETHODCALLTYPE *EncodeFrame )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
+ void ( STDMETHODCALLTYPE *EncodeFrame1 )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap1 *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
+ void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandList4Vtbl;
+
+ interface ID3D12VideoEncodeCommandList4
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList4_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList4_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
+
+
+#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0030 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
+DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
+DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
+DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
+DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
+DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
+DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
+DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
+DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
+DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
+DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
+DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
+DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
+DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
+DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
+DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
+DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
+DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
+DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
+DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
+DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
+DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
+DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
+DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
+DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dcommon.h b/Source/ThirdParty/DirectX12Agility/d3dcommon.h
new file mode 100644
index 000000000..2e2418dc1
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dcommon.h
@@ -0,0 +1,1133 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+/* @@MIDL_FILE_HEADING( ) */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3dcommon_h__
+#define __d3dcommon_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D10Blob_FWD_DEFINED__
+#define __ID3D10Blob_FWD_DEFINED__
+typedef interface ID3D10Blob ID3D10Blob;
+
+#endif /* __ID3D10Blob_FWD_DEFINED__ */
+
+
+#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
+#define __ID3DDestructionNotifier_FWD_DEFINED__
+typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
+
+#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3dcommon_0000_0000 */
+/* [local] */
+
+typedef
+enum D3D_DRIVER_TYPE
+ {
+ D3D_DRIVER_TYPE_UNKNOWN = 0,
+ D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
+ D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
+ D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
+ D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
+ D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
+ } D3D_DRIVER_TYPE;
+
+typedef
+enum D3D_FEATURE_LEVEL
+ {
+ D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
+ D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
+ D3D_FEATURE_LEVEL_9_1 = 0x9100,
+ D3D_FEATURE_LEVEL_9_2 = 0x9200,
+ D3D_FEATURE_LEVEL_9_3 = 0x9300,
+ D3D_FEATURE_LEVEL_10_0 = 0xa000,
+ D3D_FEATURE_LEVEL_10_1 = 0xa100,
+ D3D_FEATURE_LEVEL_11_0 = 0xb000,
+ D3D_FEATURE_LEVEL_11_1 = 0xb100,
+ D3D_FEATURE_LEVEL_12_0 = 0xc000,
+ D3D_FEATURE_LEVEL_12_1 = 0xc100,
+ D3D_FEATURE_LEVEL_12_2 = 0xc200
+ } D3D_FEATURE_LEVEL;
+
+#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
+#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
+#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
+#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
+#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
+#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
+#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
+#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
+#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
+#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
+#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
+#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
+#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
+#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
+#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
+typedef
+enum D3D_PRIMITIVE_TOPOLOGY
+ {
+ D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
+ D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
+ D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
+ D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
+ D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
+ D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
+ D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
+ D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
+ D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
+ D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
+ D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
+ D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
+ D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
+ D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
+ D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
+ D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
+ D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
+ D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
+ D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
+ D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
+ D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
+ D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
+ D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
+ D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
+ D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
+ D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
+ D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
+ D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
+ D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
+ D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
+ D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
+ D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
+ D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
+ D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
+ D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
+ D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
+ D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
+ D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
+ D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
+ D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
+ D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
+ D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
+ D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
+ D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
+ D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
+ D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
+ D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
+ D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
+ D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
+ D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
+ D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
+ } D3D_PRIMITIVE_TOPOLOGY;
+
+typedef
+enum D3D_PRIMITIVE
+ {
+ D3D_PRIMITIVE_UNDEFINED = 0,
+ D3D_PRIMITIVE_POINT = 1,
+ D3D_PRIMITIVE_LINE = 2,
+ D3D_PRIMITIVE_TRIANGLE = 3,
+ D3D_PRIMITIVE_LINE_ADJ = 6,
+ D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
+ D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
+ D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
+ D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
+ D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
+ D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
+ D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
+ D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
+ D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
+ D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
+ D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
+ D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
+ D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
+ D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
+ D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
+ D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
+ D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
+ D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
+ D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
+ D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
+ D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
+ D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
+ D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
+ D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
+ D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
+ D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
+ D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
+ D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
+ D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
+ D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
+ D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
+ D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
+ D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
+ D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
+ D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
+ D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
+ D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
+ D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
+ D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
+ D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
+ D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
+ D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
+ D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
+ D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
+ D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
+ D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
+ D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
+ } D3D_PRIMITIVE;
+
+typedef
+enum D3D_SRV_DIMENSION
+ {
+ D3D_SRV_DIMENSION_UNKNOWN = 0,
+ D3D_SRV_DIMENSION_BUFFER = 1,
+ D3D_SRV_DIMENSION_TEXTURE1D = 2,
+ D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D_SRV_DIMENSION_TEXTURE2D = 4,
+ D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
+ D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D_SRV_DIMENSION_TEXTURE3D = 8,
+ D3D_SRV_DIMENSION_TEXTURECUBE = 9,
+ D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+ D3D_SRV_DIMENSION_BUFFEREX = 11,
+ D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+ D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+ D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+ D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+ D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+ D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+ D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+ D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+ D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+ D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+ D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+ D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+ D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+ D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+ D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+ D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+ D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+ D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+ D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+ D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+ D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
+ D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+ D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+ D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+ D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+ D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+ D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+ D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+ D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+ D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+ D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+ D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
+ D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
+ } D3D_SRV_DIMENSION;
+
+#define D3D_SHADER_FEATURE_DOUBLES 0x00001
+#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
+#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
+#define D3D_SHADER_FEATURE_64_UAVS 0x00008
+#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
+#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
+#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
+#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
+#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
+#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
+#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
+#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
+#define D3D_SHADER_FEATURE_ROVS 0x01000
+#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
+#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
+#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
+#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
+#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
+#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
+#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
+#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
+#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
+#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
+#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
+#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
+#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
+#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
+#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
+#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
+#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
+#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
+#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
+#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
+#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
+#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
+typedef struct _D3D_SHADER_MACRO
+ {
+ LPCSTR Name;
+ LPCSTR Definition;
+ } D3D_SHADER_MACRO;
+
+typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
+
+DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D10Blob_INTERFACE_DEFINED__
+#define __ID3D10Blob_INTERFACE_DEFINED__
+
+/* interface ID3D10Blob */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Blob;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
+ ID3D10Blob : public IUnknown
+ {
+ public:
+ virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
+
+ virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D10BlobVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Blob * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Blob * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Blob * This);
+
+ DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
+ LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
+ ID3D10Blob * This);
+
+ DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
+ SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
+ ID3D10Blob * This);
+
+ END_INTERFACE
+ } ID3D10BlobVtbl;
+
+ interface ID3D10Blob
+ {
+ CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Blob_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Blob_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Blob_GetBufferPointer(This) \
+ ( (This)->lpVtbl -> GetBufferPointer(This) )
+
+#define ID3D10Blob_GetBufferSize(This) \
+ ( (This)->lpVtbl -> GetBufferSize(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dcommon_0000_0001 */
+/* [local] */
+
+typedef interface ID3D10Blob* LPD3D10BLOB;
+typedef ID3D10Blob ID3DBlob;
+
+typedef ID3DBlob* LPD3DBLOB;
+#define IID_ID3DBlob IID_ID3D10Blob
+typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
+ void *pData);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
+#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
+
+/* interface ID3DDestructionNotifier */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DDestructionNotifier;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
+ ID3DDestructionNotifier : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
+ /* [annotation] */
+ _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
+ /* [annotation] */
+ _In_ void *pData,
+ /* [annotation] */
+ _Out_ UINT *pCallbackID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
+ /* [annotation] */
+ _In_ UINT callbackID) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DDestructionNotifierVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DDestructionNotifier * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DDestructionNotifier * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DDestructionNotifier * This);
+
+ DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
+ HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
+ ID3DDestructionNotifier * This,
+ /* [annotation] */
+ _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
+ /* [annotation] */
+ _In_ void *pData,
+ /* [annotation] */
+ _Out_ UINT *pCallbackID);
+
+ DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
+ ID3DDestructionNotifier * This,
+ /* [annotation] */
+ _In_ UINT callbackID);
+
+ END_INTERFACE
+ } ID3DDestructionNotifierVtbl;
+
+ interface ID3DDestructionNotifier
+ {
+ CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DDestructionNotifier_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DDestructionNotifier_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
+ ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
+
+#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
+ ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dcommon_0000_0002 */
+/* [local] */
+
+typedef
+enum _D3D_INCLUDE_TYPE
+ {
+ D3D_INCLUDE_LOCAL = 0,
+ D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
+ D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
+ D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
+ D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
+ } D3D_INCLUDE_TYPE;
+
+typedef interface ID3DInclude ID3DInclude;
+#undef INTERFACE
+#define INTERFACE ID3DInclude
+DECLARE_INTERFACE(ID3DInclude)
+{
+ STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
+ STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
+};
+typedef ID3DInclude* LPD3DINCLUDE;
+typedef
+enum _D3D_SHADER_VARIABLE_CLASS
+ {
+ D3D_SVC_SCALAR = 0,
+ D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
+ D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
+ D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
+ D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
+ D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
+ D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
+ D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
+ D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
+ D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
+ D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
+ D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
+ D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
+ D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
+ D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
+ D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
+ D3D_SVC_FORCE_DWORD = 0x7fffffff
+ } D3D_SHADER_VARIABLE_CLASS;
+
+typedef
+enum _D3D_SHADER_VARIABLE_FLAGS
+ {
+ D3D_SVF_USERPACKED = 1,
+ D3D_SVF_USED = 2,
+ D3D_SVF_INTERFACE_POINTER = 4,
+ D3D_SVF_INTERFACE_PARAMETER = 8,
+ D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
+ D3D10_SVF_USED = D3D_SVF_USED,
+ D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
+ D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
+ D3D_SVF_FORCE_DWORD = 0x7fffffff
+ } D3D_SHADER_VARIABLE_FLAGS;
+
+typedef
+enum _D3D_SHADER_VARIABLE_TYPE
+ {
+ D3D_SVT_VOID = 0,
+ D3D_SVT_BOOL = 1,
+ D3D_SVT_INT = 2,
+ D3D_SVT_FLOAT = 3,
+ D3D_SVT_STRING = 4,
+ D3D_SVT_TEXTURE = 5,
+ D3D_SVT_TEXTURE1D = 6,
+ D3D_SVT_TEXTURE2D = 7,
+ D3D_SVT_TEXTURE3D = 8,
+ D3D_SVT_TEXTURECUBE = 9,
+ D3D_SVT_SAMPLER = 10,
+ D3D_SVT_SAMPLER1D = 11,
+ D3D_SVT_SAMPLER2D = 12,
+ D3D_SVT_SAMPLER3D = 13,
+ D3D_SVT_SAMPLERCUBE = 14,
+ D3D_SVT_PIXELSHADER = 15,
+ D3D_SVT_VERTEXSHADER = 16,
+ D3D_SVT_PIXELFRAGMENT = 17,
+ D3D_SVT_VERTEXFRAGMENT = 18,
+ D3D_SVT_UINT = 19,
+ D3D_SVT_UINT8 = 20,
+ D3D_SVT_GEOMETRYSHADER = 21,
+ D3D_SVT_RASTERIZER = 22,
+ D3D_SVT_DEPTHSTENCIL = 23,
+ D3D_SVT_BLEND = 24,
+ D3D_SVT_BUFFER = 25,
+ D3D_SVT_CBUFFER = 26,
+ D3D_SVT_TBUFFER = 27,
+ D3D_SVT_TEXTURE1DARRAY = 28,
+ D3D_SVT_TEXTURE2DARRAY = 29,
+ D3D_SVT_RENDERTARGETVIEW = 30,
+ D3D_SVT_DEPTHSTENCILVIEW = 31,
+ D3D_SVT_TEXTURE2DMS = 32,
+ D3D_SVT_TEXTURE2DMSARRAY = 33,
+ D3D_SVT_TEXTURECUBEARRAY = 34,
+ D3D_SVT_HULLSHADER = 35,
+ D3D_SVT_DOMAINSHADER = 36,
+ D3D_SVT_INTERFACE_POINTER = 37,
+ D3D_SVT_COMPUTESHADER = 38,
+ D3D_SVT_DOUBLE = 39,
+ D3D_SVT_RWTEXTURE1D = 40,
+ D3D_SVT_RWTEXTURE1DARRAY = 41,
+ D3D_SVT_RWTEXTURE2D = 42,
+ D3D_SVT_RWTEXTURE2DARRAY = 43,
+ D3D_SVT_RWTEXTURE3D = 44,
+ D3D_SVT_RWBUFFER = 45,
+ D3D_SVT_BYTEADDRESS_BUFFER = 46,
+ D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
+ D3D_SVT_STRUCTURED_BUFFER = 48,
+ D3D_SVT_RWSTRUCTURED_BUFFER = 49,
+ D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
+ D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
+ D3D_SVT_MIN8FLOAT = 52,
+ D3D_SVT_MIN10FLOAT = 53,
+ D3D_SVT_MIN16FLOAT = 54,
+ D3D_SVT_MIN12INT = 55,
+ D3D_SVT_MIN16INT = 56,
+ D3D_SVT_MIN16UINT = 57,
+ D3D_SVT_INT16 = 58,
+ D3D_SVT_UINT16 = 59,
+ D3D_SVT_FLOAT16 = 60,
+ D3D_SVT_INT64 = 61,
+ D3D_SVT_UINT64 = 62,
+ D3D10_SVT_VOID = D3D_SVT_VOID,
+ D3D10_SVT_BOOL = D3D_SVT_BOOL,
+ D3D10_SVT_INT = D3D_SVT_INT,
+ D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
+ D3D10_SVT_STRING = D3D_SVT_STRING,
+ D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
+ D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
+ D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
+ D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
+ D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
+ D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
+ D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
+ D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
+ D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
+ D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
+ D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
+ D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
+ D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
+ D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
+ D3D10_SVT_UINT = D3D_SVT_UINT,
+ D3D10_SVT_UINT8 = D3D_SVT_UINT8,
+ D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
+ D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
+ D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
+ D3D10_SVT_BLEND = D3D_SVT_BLEND,
+ D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
+ D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
+ D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
+ D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
+ D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
+ D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
+ D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
+ D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
+ D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
+ D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
+ D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
+ D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
+ D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
+ D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
+ D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
+ D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
+ D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
+ D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
+ D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
+ D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
+ D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
+ D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
+ D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
+ D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
+ D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
+ D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
+ D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
+ D3D_SVT_FORCE_DWORD = 0x7fffffff
+ } D3D_SHADER_VARIABLE_TYPE;
+
+typedef
+enum _D3D_SHADER_INPUT_FLAGS
+ {
+ D3D_SIF_USERPACKED = 0x1,
+ D3D_SIF_COMPARISON_SAMPLER = 0x2,
+ D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
+ D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
+ D3D_SIF_TEXTURE_COMPONENTS = 0xc,
+ D3D_SIF_UNUSED = 0x10,
+ D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
+ D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
+ D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
+ D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
+ D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
+ D3D_SIF_FORCE_DWORD = 0x7fffffff
+ } D3D_SHADER_INPUT_FLAGS;
+
+typedef
+enum _D3D_SHADER_INPUT_TYPE
+ {
+ D3D_SIT_CBUFFER = 0,
+ D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
+ D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
+ D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
+ D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
+ D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
+ D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
+ D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
+ D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
+ D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
+ D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
+ D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
+ D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
+ D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
+ D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
+ D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
+ D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
+ D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
+ D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
+ D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
+ D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
+ D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
+ D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
+ D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
+ D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
+ D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
+ } D3D_SHADER_INPUT_TYPE;
+
+typedef
+enum _D3D_SHADER_CBUFFER_FLAGS
+ {
+ D3D_CBF_USERPACKED = 1,
+ D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
+ D3D_CBF_FORCE_DWORD = 0x7fffffff
+ } D3D_SHADER_CBUFFER_FLAGS;
+
+typedef
+enum _D3D_CBUFFER_TYPE
+ {
+ D3D_CT_CBUFFER = 0,
+ D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
+ D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
+ D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
+ D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
+ D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
+ D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
+ D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
+ D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
+ D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
+ } D3D_CBUFFER_TYPE;
+
+typedef
+enum D3D_NAME
+ {
+ D3D_NAME_UNDEFINED = 0,
+ D3D_NAME_POSITION = 1,
+ D3D_NAME_CLIP_DISTANCE = 2,
+ D3D_NAME_CULL_DISTANCE = 3,
+ D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
+ D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
+ D3D_NAME_VERTEX_ID = 6,
+ D3D_NAME_PRIMITIVE_ID = 7,
+ D3D_NAME_INSTANCE_ID = 8,
+ D3D_NAME_IS_FRONT_FACE = 9,
+ D3D_NAME_SAMPLE_INDEX = 10,
+ D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
+ D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
+ D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
+ D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
+ D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
+ D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
+ D3D_NAME_BARYCENTRICS = 23,
+ D3D_NAME_SHADINGRATE = 24,
+ D3D_NAME_CULLPRIMITIVE = 25,
+ D3D_NAME_TARGET = 64,
+ D3D_NAME_DEPTH = 65,
+ D3D_NAME_COVERAGE = 66,
+ D3D_NAME_DEPTH_GREATER_EQUAL = 67,
+ D3D_NAME_DEPTH_LESS_EQUAL = 68,
+ D3D_NAME_STENCIL_REF = 69,
+ D3D_NAME_INNER_COVERAGE = 70,
+ D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
+ D3D10_NAME_POSITION = D3D_NAME_POSITION,
+ D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
+ D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
+ D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
+ D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
+ D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
+ D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
+ D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
+ D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
+ D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
+ D3D10_NAME_TARGET = D3D_NAME_TARGET,
+ D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
+ D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
+ D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
+ D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
+ D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
+ D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
+ D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
+ D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
+ D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
+ D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
+ D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
+ D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
+ D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
+ D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
+ D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
+ } D3D_NAME;
+
+typedef
+enum D3D_RESOURCE_RETURN_TYPE
+ {
+ D3D_RETURN_TYPE_UNORM = 1,
+ D3D_RETURN_TYPE_SNORM = 2,
+ D3D_RETURN_TYPE_SINT = 3,
+ D3D_RETURN_TYPE_UINT = 4,
+ D3D_RETURN_TYPE_FLOAT = 5,
+ D3D_RETURN_TYPE_MIXED = 6,
+ D3D_RETURN_TYPE_DOUBLE = 7,
+ D3D_RETURN_TYPE_CONTINUED = 8,
+ D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
+ D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
+ D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
+ D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
+ D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
+ D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
+ D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
+ D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
+ D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
+ D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
+ D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
+ D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
+ D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
+ D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
+ } D3D_RESOURCE_RETURN_TYPE;
+
+typedef
+enum D3D_REGISTER_COMPONENT_TYPE
+ {
+ D3D_REGISTER_COMPONENT_UNKNOWN = 0,
+ D3D_REGISTER_COMPONENT_UINT32 = 1,
+ D3D_REGISTER_COMPONENT_SINT32 = 2,
+ D3D_REGISTER_COMPONENT_FLOAT32 = 3,
+ D3D_REGISTER_COMPONENT_UINT16 = 4,
+ D3D_REGISTER_COMPONENT_SINT16 = 5,
+ D3D_REGISTER_COMPONENT_FLOAT16 = 6,
+ D3D_REGISTER_COMPONENT_UINT64 = 7,
+ D3D_REGISTER_COMPONENT_SINT64 = 8,
+ D3D_REGISTER_COMPONENT_FLOAT64 = 9,
+ D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
+ D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
+ D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
+ D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
+ D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
+ D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
+ D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
+ D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
+ D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
+ D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
+ } D3D_REGISTER_COMPONENT_TYPE;
+
+typedef
+enum D3D_TESSELLATOR_DOMAIN
+ {
+ D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
+ D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
+ D3D_TESSELLATOR_DOMAIN_TRI = 2,
+ D3D_TESSELLATOR_DOMAIN_QUAD = 3,
+ D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
+ D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
+ D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
+ D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
+ } D3D_TESSELLATOR_DOMAIN;
+
+typedef
+enum D3D_TESSELLATOR_PARTITIONING
+ {
+ D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
+ D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
+ D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
+ D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
+ D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
+ D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
+ D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
+ D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
+ } D3D_TESSELLATOR_PARTITIONING;
+
+typedef
+enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
+ {
+ D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
+ D3D_TESSELLATOR_OUTPUT_POINT = 1,
+ D3D_TESSELLATOR_OUTPUT_LINE = 2,
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
+ D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
+ D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
+ D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
+ D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
+ D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
+ } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
+
+typedef
+enum D3D_MIN_PRECISION
+ {
+ D3D_MIN_PRECISION_DEFAULT = 0,
+ D3D_MIN_PRECISION_FLOAT_16 = 1,
+ D3D_MIN_PRECISION_FLOAT_2_8 = 2,
+ D3D_MIN_PRECISION_RESERVED = 3,
+ D3D_MIN_PRECISION_SINT_16 = 4,
+ D3D_MIN_PRECISION_UINT_16 = 5,
+ D3D_MIN_PRECISION_ANY_16 = 0xf0,
+ D3D_MIN_PRECISION_ANY_10 = 0xf1
+ } D3D_MIN_PRECISION;
+
+typedef
+enum D3D_INTERPOLATION_MODE
+ {
+ D3D_INTERPOLATION_UNDEFINED = 0,
+ D3D_INTERPOLATION_CONSTANT = 1,
+ D3D_INTERPOLATION_LINEAR = 2,
+ D3D_INTERPOLATION_LINEAR_CENTROID = 3,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
+ D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
+ } D3D_INTERPOLATION_MODE;
+
+typedef
+enum _D3D_PARAMETER_FLAGS
+ {
+ D3D_PF_NONE = 0,
+ D3D_PF_IN = 0x1,
+ D3D_PF_OUT = 0x2,
+ D3D_PF_FORCE_DWORD = 0x7fffffff
+ } D3D_PARAMETER_FLAGS;
+
+typedef
+enum D3D_FORMAT_LAYOUT
+ {
+ D3DFL_STANDARD = 0,
+ D3DFL_CUSTOM = -1
+ } D3D_FORMAT_LAYOUT;
+
+typedef
+enum D3D_FORMAT_TYPE_LEVEL
+ {
+ D3DFTL_NO_TYPE = 0,
+ D3DFTL_PARTIAL_TYPE = -2,
+ D3DFTL_FULL_TYPE = -1
+ } D3D_FORMAT_TYPE_LEVEL;
+
+typedef
+enum D3D_FORMAT_COMPONENT_NAME
+ {
+ D3DFCN_R = -4,
+ D3DFCN_G = -3,
+ D3DFCN_B = -2,
+ D3DFCN_A = -1,
+ D3DFCN_D = 0,
+ D3DFCN_S = 1,
+ D3DFCN_X = 2
+ } D3D_FORMAT_COMPONENT_NAME;
+
+typedef
+enum D3D_FORMAT_COMPONENT_INTERPRETATION
+ {
+ D3DFCI_TYPELESS = 0,
+ D3DFCI_FLOAT = -4,
+ D3DFCI_SNORM = -3,
+ D3DFCI_UNORM = -2,
+ D3DFCI_SINT = -1,
+ D3DFCI_UINT = 1,
+ D3DFCI_UNORM_SRGB = 2,
+ D3DFCI_BIASED_FIXED_2_8 = 3
+ } D3D_FORMAT_COMPONENT_INTERPRETATION;
+
+DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
+DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
+DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
+DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
+#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
+#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
+#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
+#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
+#define D3D_COMPONENT_MASK_X 1
+#define D3D_COMPONENT_MASK_Y 2
+#define D3D_COMPONENT_MASK_Z 4
+#define D3D_COMPONENT_MASK_W 8
+DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
+DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dshadercacheregistration.h b/Source/ThirdParty/DirectX12Agility/d3dshadercacheregistration.h
new file mode 100644
index 000000000..671866a18
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3dshadercacheregistration_h__
+#define __d3dshadercacheregistration_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
+#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
+
+#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
+#define __ID3DShaderCacheComponent_FWD_DEFINED__
+typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
+
+#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
+#define __ID3DShaderCacheApplication_FWD_DEFINED__
+typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
+
+#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
+#define __ID3DShaderCacheInstaller_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
+
+#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
+#define __ID3DShaderCacheExplorer_FWD_DEFINED__
+typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
+
+#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
+#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
+
+#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
+/* [local] */
+
+#pragma once
+DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
+typedef
+enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
+ {
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
+ } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstallerClient */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
+ ID3DShaderCacheInstallerClient
+ {
+ public:
+ BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
+ _Inout_ SIZE_T *pNameLength,
+ _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
+
+ virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
+ _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
+
+ END_INTERFACE
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerClientVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
+ HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
+ ID3DShaderCacheInstallerClient * This,
+ _Inout_ SIZE_T *pNameLength,
+ _Out_writes_opt_(*pNameLength) wchar_t *pName);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
+ ID3DShaderCacheInstallerClient * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
+ HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
+ ID3DShaderCacheInstallerClient * This,
+ _In_ ID3DShaderCacheInstaller *pInstaller);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerClientVtbl;
+
+ interface ID3DShaderCacheInstallerClient
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
+ ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
+
+#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
+ ( (This)->lpVtbl -> GetInstallerScope(This) )
+
+#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
+ ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
+/* [local] */
+
+typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
+ {
+ const wchar_t *pAdapterFamily;
+ const wchar_t *pPsdbPath;
+ } D3D_SHADER_CACHE_PSDB_PROPERTIES;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
+#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheComponent */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheComponent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
+ ID3DShaderCacheComponent : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetComponentName(
+ _Out_ const wchar_t **pName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
+ _Out_ const wchar_t **pPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
+ _In_ const wchar_t *pAdapterFamily,
+ _Inout_ const wchar_t **pPath) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
+ UINT ArraySize,
+ _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheComponentVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheComponent * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
+ HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
+ ID3DShaderCacheComponent * This,
+ _Out_ const wchar_t **pName);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
+ HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
+ ID3DShaderCacheComponent * This,
+ _Out_ const wchar_t **pPath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
+ ID3DShaderCacheComponent * This,
+ _In_ const wchar_t *pAdapterFamily,
+ _Inout_ const wchar_t **pPath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
+ UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
+ ID3DShaderCacheComponent * This,
+ UINT ArraySize,
+ _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
+
+ END_INTERFACE
+ } ID3DShaderCacheComponentVtbl;
+
+ interface ID3DShaderCacheComponent
+ {
+ CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheComponent_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheComponent_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
+ ( (This)->lpVtbl -> GetComponentName(This,pName) )
+
+#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
+ ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
+ ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
+ ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
+ ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
+/* [local] */
+
+typedef
+enum D3D_SHADER_CACHE_TARGET_FLAGS
+ {
+ D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
+ } D3D_SHADER_CACHE_TARGET_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
+typedef union D3D_VERSION_NUMBER
+ {
+ UINT64 Version;
+ UINT16 VersionParts[ 4 ];
+ } D3D_VERSION_NUMBER;
+
+typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
+ {
+ wchar_t szAdapterFamily[ 128 ];
+ UINT64 MinimumABISupportVersion;
+ UINT64 MaximumABISupportVersion;
+ D3D_VERSION_NUMBER CompilerVersion;
+ D3D_VERSION_NUMBER ApplicationProfileVersion;
+ } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
+
+typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
+ {
+ const wchar_t *pExeFilename;
+ const wchar_t *pName;
+ D3D_VERSION_NUMBER Version;
+ const wchar_t *pEngineName;
+ D3D_VERSION_NUMBER EngineVersion;
+ } D3D_SHADER_CACHE_APPLICATION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
+#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheApplication */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheApplication;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
+ ID3DShaderCacheApplication : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetExePath(
+ _Out_ const wchar_t **pExePath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
+ _In_ const wchar_t *pName,
+ _In_ const wchar_t *pStateObjectDBPath,
+ _In_ UINT NumPSDB,
+ _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
+ _In_ ID3DShaderCacheComponent *pComponent) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponent(
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
+ _In_ UINT ArraySize,
+ _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
+ _Out_ const wchar_t **pInstallerName) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheApplicationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheApplication * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
+ HRESULT ( STDMETHODCALLTYPE *GetExePath )(
+ ID3DShaderCacheApplication * This,
+ _Out_ const wchar_t **pExePath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ ID3DShaderCacheApplication * This,
+ _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
+ HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ const wchar_t *pName,
+ _In_ const wchar_t *pStateObjectDBPath,
+ _In_ UINT NumPSDB,
+ _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
+ HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ ID3DShaderCacheComponent *pComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
+ UINT ( STDMETHODCALLTYPE *GetComponentCount )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
+ HRESULT ( STDMETHODCALLTYPE *GetComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
+ UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
+ ID3DShaderCacheApplication * This,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
+ ID3DShaderCacheApplication * This,
+ _In_ UINT ArraySize,
+ _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
+ HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
+ ID3DShaderCacheApplication * This,
+ _Out_ const wchar_t **pInstallerName);
+
+ END_INTERFACE
+ } ID3DShaderCacheApplicationVtbl;
+
+ interface ID3DShaderCacheApplication
+ {
+ CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheApplication_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheApplication_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
+ ( (This)->lpVtbl -> GetExePath(This,pExePath) )
+
+#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
+
+#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
+ ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
+
+#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
+ ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
+
+#define ID3DShaderCacheApplication_GetComponentCount(This) \
+ ( (This)->lpVtbl -> GetComponentCount(This) )
+
+#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
+ ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
+
+#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
+
+#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
+
+#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
+ ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
+/* [local] */
+
+typedef struct SC_HANDLE__ *SC_HANDLE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstaller */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstaller;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
+ ID3DShaderCacheInstaller : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
+ SC_HANDLE hServiceHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
+ SC_HANDLE hServiceHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
+ _In_ const wchar_t *pExePath,
+ _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
+ _In_ ID3DShaderCacheApplication *pApplication) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplication(
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
+ _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ _Inout_ UINT *pArraySize,
+ _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheInstaller * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
+ HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
+ HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
+ ID3DShaderCacheInstaller * This,
+ SC_HANDLE hServiceHandle);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
+ ID3DShaderCacheInstaller * This,
+ SC_HANDLE hServiceHandle);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
+ HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ const wchar_t *pExePath,
+ _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
+ HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ ID3DShaderCacheApplication *pApplication);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
+ UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
+ HRESULT ( STDMETHODCALLTYPE *GetApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
+ HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
+ UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
+ ID3DShaderCacheInstaller * This,
+ _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ _Inout_ UINT *pArraySize,
+ _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerVtbl;
+
+ interface ID3DShaderCacheInstaller
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheInstaller_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheInstaller_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
+ ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
+
+#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
+ ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
+
+#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
+ ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
+
+#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
+ ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
+
+#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
+ ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
+
+#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
+ ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
+
+#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
+ ( (This)->lpVtbl -> GetApplicationCount(This) )
+
+#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
+ ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
+
+#define ID3DShaderCacheInstaller_ClearAllState(This) \
+ ( (This)->lpVtbl -> ClearAllState(This) )
+
+#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
+ ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
+
+#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
+#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheExplorer */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheExplorer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
+ ID3DShaderCacheExplorer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
+ _In_ const wchar_t *pFullExePath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheExplorerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheExplorer * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheExplorer * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheExplorer * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
+ ID3DShaderCacheExplorer * This,
+ _In_ const wchar_t *pFullExePath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ END_INTERFACE
+ } ID3DShaderCacheExplorerVtbl;
+
+ interface ID3DShaderCacheExplorer
+ {
+ CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheExplorer_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheExplorer_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
+ ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstallerFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
+ ID3DShaderCacheInstallerFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
+ _In_ ID3DShaderCacheInstallerClient *pClient,
+ REFIID riid,
+ _COM_Outptr_ void **ppvInstaller) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
+ IUnknown *pUnknown,
+ REFIID riid,
+ _COM_Outptr_ void **ppvExplorer) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheInstallerFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheInstallerFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheInstallerFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
+ HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
+ ID3DShaderCacheInstallerFactory * This,
+ _In_ ID3DShaderCacheInstallerClient *pClient,
+ REFIID riid,
+ _COM_Outptr_ void **ppvInstaller);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
+ HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
+ ID3DShaderCacheInstallerFactory * This,
+ IUnknown *pUnknown,
+ REFIID riid,
+ _COM_Outptr_ void **ppvExplorer);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerFactoryVtbl;
+
+ interface ID3DShaderCacheInstallerFactory
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheInstallerFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheInstallerFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
+ ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
+
+#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
+ ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
+/* [local] */
+
+DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
+DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
+DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
+DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
+DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
+DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12.h
new file mode 100644
index 000000000..e8ec24e37
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12.h
@@ -0,0 +1,36 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#ifndef __D3DX12_H__
+#define __D3DX12_H__
+
+#include "d3d12.h"
+
+#if defined( __cplusplus )
+
+#include "d3dx12_barriers.h"
+#include "d3dx12_core.h"
+#include "d3dx12_default.h"
+#include "d3dx12_pipeline_state_stream.h"
+#include "d3dx12_render_pass.h"
+#include "d3dx12_resource_helpers.h"
+#include "d3dx12_root_signature.h"
+#include "d3dx12_property_format_table.h"
+
+#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
+#include "d3dx12_state_object.h"
+#endif // !D3DX12_NO_STATE_OBJECT_HELPERS
+
+#ifndef D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
+#include "d3dx12_check_feature_support.h"
+#endif // !D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
+
+#endif // defined( __cplusplus )
+
+#endif //__D3DX12_H__
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_barriers.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_barriers.h
new file mode 100644
index 000000000..1bd7a7497
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_barriers.h
@@ -0,0 +1,193 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#ifndef __D3DX12_BARRIERS_H__
+#define __D3DX12_BARRIERS_H__
+
+#if defined( __cplusplus )
+
+#include "d3d12.h"
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
+{
+ CD3DX12_RESOURCE_BARRIER() = default;
+ explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
+ D3D12_RESOURCE_BARRIER(o)
+ {}
+ static inline CD3DX12_RESOURCE_BARRIER Transition(
+ _In_ ID3D12Resource* pResource,
+ D3D12_RESOURCE_STATES stateBefore,
+ D3D12_RESOURCE_STATES stateAfter,
+ UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
+ D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
+ {
+ CD3DX12_RESOURCE_BARRIER result = {};
+ D3D12_RESOURCE_BARRIER &barrier = result;
+ result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+ result.Flags = flags;
+ barrier.Transition.pResource = pResource;
+ barrier.Transition.StateBefore = stateBefore;
+ barrier.Transition.StateAfter = stateAfter;
+ barrier.Transition.Subresource = subresource;
+ return result;
+ }
+ static inline CD3DX12_RESOURCE_BARRIER Aliasing(
+ _In_opt_ ID3D12Resource* pResourceBefore,
+ _In_opt_ ID3D12Resource* pResourceAfter) noexcept
+ {
+ CD3DX12_RESOURCE_BARRIER result = {};
+ D3D12_RESOURCE_BARRIER &barrier = result;
+ result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
+ barrier.Aliasing.pResourceBefore = pResourceBefore;
+ barrier.Aliasing.pResourceAfter = pResourceAfter;
+ return result;
+ }
+ static inline CD3DX12_RESOURCE_BARRIER UAV(
+ _In_opt_ ID3D12Resource* pResource) noexcept
+ {
+ CD3DX12_RESOURCE_BARRIER result = {};
+ D3D12_RESOURCE_BARRIER &barrier = result;
+ result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
+ barrier.UAV.pResource = pResource;
+ return result;
+ }
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+
+//================================================================================================
+// D3DX12 Enhanced Barrier Helpers
+//================================================================================================
+
+class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
+{
+public:
+ CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
+ CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
+ D3D12_BARRIER_SUBRESOURCE_RANGE(o)
+ {}
+ explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
+ D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
+ {}
+ CD3DX12_BARRIER_SUBRESOURCE_RANGE(
+ UINT firstMipLevel,
+ UINT numMips,
+ UINT firstArraySlice,
+ UINT numArraySlices,
+ UINT firstPlane = 0,
+ UINT numPlanes = 1) noexcept :
+ D3D12_BARRIER_SUBRESOURCE_RANGE
+ {
+ firstMipLevel,
+ numMips,
+ firstArraySlice,
+ numArraySlices,
+ firstPlane,
+ numPlanes
+ }
+ {}
+};
+
+class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
+{
+public:
+ CD3DX12_GLOBAL_BARRIER() = default;
+ CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
+ CD3DX12_GLOBAL_BARRIER(
+ D3D12_BARRIER_SYNC syncBefore,
+ D3D12_BARRIER_SYNC syncAfter,
+ D3D12_BARRIER_ACCESS accessBefore,
+ D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
+ syncBefore,
+ syncAfter,
+ accessBefore,
+ accessAfter
+ }
+ {}
+};
+
+class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
+{
+public:
+ CD3DX12_BUFFER_BARRIER() = default;
+ CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
+ CD3DX12_BUFFER_BARRIER(
+ D3D12_BARRIER_SYNC syncBefore,
+ D3D12_BARRIER_SYNC syncAfter,
+ D3D12_BARRIER_ACCESS accessBefore,
+ D3D12_BARRIER_ACCESS accessAfter,
+ ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
+ syncBefore,
+ syncAfter,
+ accessBefore,
+ accessAfter,
+ pRes,
+ 0, ULLONG_MAX
+ }
+ {}
+};
+
+class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
+{
+public:
+ CD3DX12_TEXTURE_BARRIER() = default;
+ CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
+ CD3DX12_TEXTURE_BARRIER(
+ D3D12_BARRIER_SYNC syncBefore,
+ D3D12_BARRIER_SYNC syncAfter,
+ D3D12_BARRIER_ACCESS accessBefore,
+ D3D12_BARRIER_ACCESS accessAfter,
+ D3D12_BARRIER_LAYOUT layoutBefore,
+ D3D12_BARRIER_LAYOUT layoutAfter,
+ ID3D12Resource *pRes,
+ const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
+ D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
+ syncBefore,
+ syncAfter,
+ accessBefore,
+ accessAfter,
+ layoutBefore,
+ layoutAfter,
+ pRes,
+ subresources,
+ flag
+ }
+ {}
+};
+
+class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
+{
+public:
+ CD3DX12_BARRIER_GROUP() = default;
+ CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
+ CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
+ {
+ Type = D3D12_BARRIER_TYPE_BUFFER;
+ NumBarriers = numBarriers;
+ pBufferBarriers = pBarriers;
+ }
+ CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
+ {
+ Type = D3D12_BARRIER_TYPE_TEXTURE;
+ NumBarriers = numBarriers;
+ pTextureBarriers = pBarriers;
+ }
+ CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
+ {
+ Type = D3D12_BARRIER_TYPE_GLOBAL;
+ NumBarriers = numBarriers;
+ pGlobalBarriers = pBarriers;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 608
+
+
+#endif // defined( __cplusplus )
+
+#endif // __D3DX12_BARRIERS_H__
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_check_feature_support.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_check_feature_support.h
new file mode 100644
index 000000000..725fb7fbb
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_check_feature_support.h
@@ -0,0 +1,1162 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3d12.h"
+
+//================================================================================================
+// D3DX12 Check Feature Support
+//================================================================================================
+
+#include
+
+class CD3DX12FeatureSupport
+{
+public: // Function declaration
+ // Default constructor that creates an empty object
+ CD3DX12FeatureSupport() noexcept;
+
+ // Initialize data from the given device
+ HRESULT Init(ID3D12Device* pDevice);
+
+ // Retreives the status of the object. If an error occurred in the initialization process, the function returns the error code.
+ HRESULT GetStatus() const noexcept { return m_hStatus; }
+
+ // Getter functions for each feature class
+ // D3D12_OPTIONS
+ BOOL DoublePrecisionFloatShaderOps() const noexcept;
+ BOOL OutputMergerLogicOp() const noexcept;
+ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport() const noexcept;
+ D3D12_TILED_RESOURCES_TIER TiledResourcesTier() const noexcept;
+ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier() const noexcept;
+ BOOL PSSpecifiedStencilRefSupported() const noexcept;
+ BOOL TypedUAVLoadAdditionalFormats() const noexcept;
+ BOOL ROVsSupported() const noexcept;
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier() const noexcept;
+ BOOL StandardSwizzle64KBSupported() const noexcept;
+ BOOL CrossAdapterRowMajorTextureSupported() const noexcept;
+ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation() const noexcept;
+ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier() const noexcept;
+ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier() const noexcept;
+ UINT MaxGPUVirtualAddressBitsPerResource() const noexcept;
+
+ // FEATURE_LEVELS
+ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel() const noexcept;
+
+ // FORMAT_SUPPORT
+ HRESULT FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const;
+
+ // MUTLTISAMPLE_QUALITY_LEVELS
+ HRESULT MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const;
+
+ // FORMAT_INFO
+ HRESULT FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const;
+
+ // GPU_VIRTUAL_ADDRESS_SUPPORT
+ UINT MaxGPUVirtualAddressBitsPerProcess() const noexcept;
+
+ // SHADER_MODEL
+ D3D_SHADER_MODEL HighestShaderModel() const noexcept;
+
+ // D3D12_OPTIONS1
+ BOOL WaveOps() const noexcept;
+ UINT WaveLaneCountMin() const noexcept;
+ UINT WaveLaneCountMax() const noexcept;
+ UINT TotalLaneCount() const noexcept;
+ BOOL ExpandedComputeResourceStates() const noexcept;
+ BOOL Int64ShaderOps() const noexcept;
+
+ // PROTECTED_RESOURCE_SESSION_SUPPORT
+ D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport(UINT NodeIndex = 0) const;
+
+ // ROOT_SIGNATURE
+ D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion() const noexcept;
+
+ // ARCHITECTURE1
+ BOOL TileBasedRenderer(UINT NodeIndex = 0) const;
+ BOOL UMA(UINT NodeIndex = 0) const;
+ BOOL CacheCoherentUMA(UINT NodeIndex = 0) const;
+ BOOL IsolatedMMU(UINT NodeIndex = 0) const;
+
+ // D3D12_OPTIONS2
+ BOOL DepthBoundsTestSupported() const noexcept;
+ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier() const noexcept;
+
+ // SHADER_CACHE
+ D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags() const noexcept;
+
+ // COMMAND_QUEUE_PRIORITY
+ BOOL CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority);
+
+ // D3D12_OPTIONS3
+ BOOL CopyQueueTimestampQueriesSupported() const noexcept;
+ BOOL CastingFullyTypedFormatSupported() const noexcept;
+ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags() const noexcept;
+ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier() const noexcept;
+ BOOL BarycentricsSupported() const noexcept;
+
+ // EXISTING_HEAPS
+ BOOL ExistingHeapsSupported() const noexcept;
+
+ // D3D12_OPTIONS4
+ BOOL MSAA64KBAlignedTextureSupported() const noexcept;
+ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier() const noexcept;
+ BOOL Native16BitShaderOpsSupported() const noexcept;
+
+ // SERIALIZATION
+ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier(UINT NodeIndex = 0) const;
+
+ // CROSS_NODE
+ // CrossNodeSharingTier handled in D3D12Options
+ BOOL CrossNodeAtomicShaderInstructions() const noexcept;
+
+ // D3D12_OPTIONS5
+ BOOL SRVOnlyTiledResourceTier3() const noexcept;
+ D3D12_RENDER_PASS_TIER RenderPassesTier() const noexcept;
+ D3D12_RAYTRACING_TIER RaytracingTier() const noexcept;
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ // DISPLAYABLE
+ BOOL DisplayableTexture() const noexcept;
+ // SharedResourceCompatibilityTier handled in D3D12Options4
+#endif
+
+ // D3D12_OPTIONS6
+ BOOL AdditionalShadingRatesSupported() const noexcept;
+ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing() const noexcept;
+ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier() const noexcept;
+ UINT ShadingRateImageTileSize() const noexcept;
+ BOOL BackgroundProcessingSupported() const noexcept;
+
+ // QUERY_META_COMMAND
+ HRESULT QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const;
+
+ // D3D12_OPTIONS7
+ D3D12_MESH_SHADER_TIER MeshShaderTier() const noexcept;
+ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier() const noexcept;
+
+ // PROTECTED_RESOURCE_SESSION_TYPE_COUNT
+ UINT ProtectedResourceSessionTypeCount(UINT NodeIndex = 0) const;
+
+ // PROTECTED_RESOURCE_SESSION_TYPES
+ std::vector ProtectedResourceSessionTypes(UINT NodeIndex = 0) const;
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+ // D3D12_OPTIONS8
+ BOOL UnalignedBlockTexturesSupported() const noexcept;
+
+ // D3D12_OPTIONS9
+ BOOL MeshShaderPipelineStatsSupported() const noexcept;
+ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex() const noexcept;
+ BOOL AtomicInt64OnTypedResourceSupported() const noexcept;
+ BOOL AtomicInt64OnGroupSharedSupported() const noexcept;
+ BOOL DerivativesInMeshAndAmplificationShadersSupported() const noexcept;
+ D3D12_WAVE_MMA_TIER WaveMMATier() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ // D3D12_OPTIONS10
+ BOOL VariableRateShadingSumCombinerSupported() const noexcept;
+ BOOL MeshShaderPerPrimitiveShadingRateSupported() const noexcept;
+
+ // D3D12_OPTIONS11
+ BOOL AtomicInt64OnDescriptorHeapResourceSupported() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
+ // D3D12_OPTIONS12
+ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives() const noexcept;
+ BOOL EnhancedBarriersSupported() const noexcept;
+ BOOL RelaxedFormatCastingSupported() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
+ // D3D12_OPTIONS13
+ BOOL UnrestrictedBufferTextureCopyPitchSupported() const noexcept;
+ BOOL UnrestrictedVertexElementAlignmentSupported() const noexcept;
+ BOOL InvertedViewportHeightFlipsYSupported() const noexcept;
+ BOOL InvertedViewportDepthFlipsZSupported() const noexcept;
+ BOOL TextureCopyBetweenDimensionsSupported() const noexcept;
+ BOOL AlphaBlendFactorSupported() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ // D3D12_OPTIONS14
+ BOOL AdvancedTextureOpsSupported() const noexcept;
+ BOOL WriteableMSAATexturesSupported() const noexcept;
+ BOOL IndependentFrontAndBackStencilRefMaskSupported() const noexcept;
+
+ // D3D12_OPTIONS15
+ BOOL TriangleFanSupported() const noexcept;
+ BOOL DynamicIndexBufferStripCutSupported() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ // D3D12_OPTIONS16
+ BOOL DynamicDepthBiasSupported() const noexcept;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ BOOL GPUUploadHeapSupported() const noexcept;
+
+ // D3D12_OPTIONS17
+ BOOL NonNormalizedCoordinateSamplersSupported() const noexcept;
+ BOOL ManualWriteTrackingResourceSupported() const noexcept;
+
+ // D3D12_OPTIONS18
+ BOOL RenderPassesValid() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+ BOOL MismatchingOutputDimensionsSupported() const noexcept;
+ UINT SupportedSampleCountsWithNoOutputs() const noexcept;
+ BOOL PointSamplingAddressesNeverRoundUp() const noexcept;
+ BOOL RasterizerDesc2Supported() const noexcept;
+ BOOL NarrowQuadrilateralLinesSupported() const noexcept;
+ BOOL AnisoFilterWithPointMipSupported() const noexcept;
+ UINT MaxSamplerDescriptorHeapSize() const noexcept;
+ UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers() const noexcept;
+ UINT MaxViewDescriptorHeapSize() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+ BOOL ComputeOnlyWriteWatchSupported() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
+ D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
+#endif
+
+private: // Private structs and helpers declaration
+ struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
+ {
+ std::vector TypeVec;
+ };
+
+ // Helper function to decide the highest shader model supported by the system
+ // Stores the result in m_dShaderModel
+ // Must be updated whenever a new shader model is added to the d3d12.h header
+ HRESULT QueryHighestShaderModel();
+
+ // Helper function to decide the highest root signature supported
+ // Must be updated whenever a new root signature version is added to the d3d12.h header
+ HRESULT QueryHighestRootSignatureVersion();
+
+ // Helper funcion to decide the highest feature level
+ HRESULT QueryHighestFeatureLevel();
+
+ // Helper function to initialize local protected resource session types structs
+ HRESULT QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count);
+
+private: // Member data
+ // Pointer to the underlying device
+ ID3D12Device* m_pDevice;
+
+ // Stores the error code from initialization
+ HRESULT m_hStatus;
+
+ // Feature support data structs
+ D3D12_FEATURE_DATA_D3D12_OPTIONS m_dOptions;
+ D3D_FEATURE_LEVEL m_eMaxFeatureLevel;
+ D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT m_dGPUVASupport;
+ D3D12_FEATURE_DATA_SHADER_MODEL m_dShaderModel;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS1 m_dOptions1;
+ std::vector m_dProtectedResourceSessionSupport;
+ D3D12_FEATURE_DATA_ROOT_SIGNATURE m_dRootSignature;
+ std::vector m_dArchitecture1;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS2 m_dOptions2;
+ D3D12_FEATURE_DATA_SHADER_CACHE m_dShaderCache;
+ D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY m_dCommandQueuePriority;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS3 m_dOptions3;
+ D3D12_FEATURE_DATA_EXISTING_HEAPS m_dExistingHeaps;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS4 m_dOptions4;
+ std::vector m_dSerialization; // Cat2 NodeIndex
+ D3D12_FEATURE_DATA_CROSS_NODE m_dCrossNode;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS5 m_dOptions5;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ D3D12_FEATURE_DATA_DISPLAYABLE m_dDisplayable;
+#endif
+ D3D12_FEATURE_DATA_D3D12_OPTIONS6 m_dOptions6;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS7 m_dOptions7;
+ std::vector m_dProtectedResourceSessionTypeCount; // Cat2 NodeIndex
+ std::vector m_dProtectedResourceSessionTypes; // Cat3
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS8 m_dOptions8;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS9 m_dOptions9;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS10 m_dOptions10;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS11 m_dOptions11;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS12 m_dOptions12;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS13 m_dOptions13;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS14 m_dOptions14;
+ D3D12_FEATURE_DATA_D3D12_OPTIONS15 m_dOptions15;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS16 m_dOptions16;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS17 m_dOptions17;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS18 m_dOptions18;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS19 m_dOptions19;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
+#endif
+};
+
+// Implementations for CD3DX12FeatureSupport functions
+
+// Macro to set up a getter function for each entry in feature support data
+// The getter function will have the same name as the feature option name
+#define FEATURE_SUPPORT_GET(RETTYPE,FEATURE,OPTION) \
+inline RETTYPE CD3DX12FeatureSupport::OPTION() const noexcept \
+{ \
+ return FEATURE.OPTION; \
+}
+
+// Macro to set up a getter function for each entry in feature support data
+// Also specifies the name for the function which can be different from the feature name
+#define FEATURE_SUPPORT_GET_NAME(RETTYPE,FEATURE,OPTION,NAME) \
+inline RETTYPE CD3DX12FeatureSupport::NAME() const noexcept \
+{\
+ return FEATURE.OPTION; \
+}
+
+// Macro to set up a getter function for feature data indexed by the graphics node ID
+// The default parameter is 0, or the first availabe graphics device node
+#define FEATURE_SUPPORT_GET_NODE_INDEXED(RETTYPE,FEATURE,OPTION) \
+inline RETTYPE CD3DX12FeatureSupport::OPTION(UINT NodeIndex) const \
+{\
+ return FEATURE[NodeIndex].OPTION; \
+}
+
+// Macro to set up a getter function for feature data indexed by NodeIndex
+// Allows a custom name for the getter function
+#define FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(RETTYPE,FEATURE,OPTION,NAME) \
+inline RETTYPE CD3DX12FeatureSupport::NAME(UINT NodeIndex) const \
+{\
+ return FEATURE[NodeIndex].OPTION; \
+}
+
+inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
+: m_pDevice(nullptr)
+, m_hStatus(E_INVALIDARG)
+, m_dOptions{}
+, m_eMaxFeatureLevel{}
+, m_dGPUVASupport{}
+, m_dShaderModel{}
+, m_dOptions1{}
+, m_dRootSignature{}
+, m_dOptions2{}
+, m_dShaderCache{}
+, m_dCommandQueuePriority{}
+, m_dOptions3{}
+, m_dExistingHeaps{}
+, m_dOptions4{}
+, m_dCrossNode{}
+, m_dOptions5{}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+, m_dDisplayable{}
+#endif
+, m_dOptions6{}
+, m_dOptions7{}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+, m_dOptions8{}
+, m_dOptions9{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+, m_dOptions10{}
+, m_dOptions11{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
+, m_dOptions12{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
+, m_dOptions13{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+, m_dOptions14{}
+, m_dOptions15{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+, m_dOptions16{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+, m_dOptions17{}
+#endif
+#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+, m_dOptions18{}
+#endif
+#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+, m_dOptions19{}
+#endif
+#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+, m_dOptions20{}
+#endif
+#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+, m_dOptions21{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+, m_dTightAlignment{}
+#endif
+{}
+
+inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
+{
+ if (!pDevice)
+ {
+ m_hStatus = E_INVALIDARG;
+ return m_hStatus;
+ }
+
+ m_pDevice = pDevice;
+
+ // Initialize static feature support data structures
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &m_dOptions, sizeof(m_dOptions))))
+ {
+ m_dOptions = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &m_dGPUVASupport, sizeof(m_dGPUVASupport))))
+ {
+ m_dGPUVASupport = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &m_dOptions1, sizeof(m_dOptions1))))
+ {
+ m_dOptions1 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &m_dOptions2, sizeof(m_dOptions2))))
+ {
+ m_dOptions2 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_CACHE, &m_dShaderCache, sizeof(m_dShaderCache))))
+ {
+ m_dShaderCache = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &m_dOptions3, sizeof(m_dOptions3))))
+ {
+ m_dOptions3 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_EXISTING_HEAPS, &m_dExistingHeaps, sizeof(m_dExistingHeaps))))
+ {
+ m_dExistingHeaps = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &m_dOptions4, sizeof(m_dOptions4))))
+ {
+ m_dOptions4 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_CROSS_NODE, &m_dCrossNode, sizeof(m_dCrossNode))))
+ {
+ m_dCrossNode = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &m_dOptions5, sizeof(m_dOptions5))))
+ {
+ m_dOptions5 = {};
+ }
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_DISPLAYABLE, &m_dDisplayable, sizeof(m_dDisplayable))))
+ {
+ m_dDisplayable = {};
+ }
+#endif
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &m_dOptions6, sizeof(m_dOptions6))))
+ {
+ m_dOptions6 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &m_dOptions7, sizeof(m_dOptions7))))
+ {
+ m_dOptions7 = {};
+ }
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &m_dOptions8, sizeof(m_dOptions8))))
+ {
+ m_dOptions8 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &m_dOptions9, sizeof(m_dOptions9))))
+ {
+ m_dOptions9 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &m_dOptions10, sizeof(m_dOptions10))))
+ {
+ m_dOptions10 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &m_dOptions11, sizeof(m_dOptions11))))
+ {
+ m_dOptions11 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &m_dOptions12, sizeof(m_dOptions12))))
+ {
+ m_dOptions12 = {};
+ m_dOptions12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE::D3D12_TRI_STATE_UNKNOWN;
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS13, &m_dOptions13, sizeof(m_dOptions13))))
+ {
+ m_dOptions13 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS14, &m_dOptions14, sizeof(m_dOptions14))))
+ {
+ m_dOptions14 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS15, &m_dOptions15, sizeof(m_dOptions15))))
+ {
+ m_dOptions15 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS16, &m_dOptions16, sizeof(m_dOptions16))))
+ {
+ m_dOptions16 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS17, &m_dOptions17, sizeof(m_dOptions17))))
+ {
+ m_dOptions17 = {};
+ }
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS18, &m_dOptions18, sizeof(m_dOptions18))))
+ {
+ m_dOptions18.RenderPassesValid = false;
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &m_dOptions19, sizeof(m_dOptions19))))
+ {
+ m_dOptions19 = {};
+ m_dOptions19.SupportedSampleCountsWithNoOutputs = 1;
+ m_dOptions19.MaxSamplerDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
+ m_dOptions19.MaxSamplerDescriptorHeapSizeWithStaticSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
+ m_dOptions19.MaxViewDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1;
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS20, &m_dOptions20, sizeof(m_dOptions20))))
+ {
+ m_dOptions20 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
+ {
+ m_dOptions21 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
+ {
+ m_dTightAlignment = {};
+ }
+#endif
+
+ // Initialize per-node feature support data structures
+ const UINT uNodeCount = m_pDevice->GetNodeCount();
+ m_dProtectedResourceSessionSupport.resize(uNodeCount);
+ m_dArchitecture1.resize(uNodeCount);
+ m_dSerialization.resize(uNodeCount);
+ m_dProtectedResourceSessionTypeCount.resize(uNodeCount);
+ m_dProtectedResourceSessionTypes.resize(uNodeCount);
+ for (UINT NodeIndex = 0; NodeIndex < uNodeCount; NodeIndex++)
+ {
+ m_dProtectedResourceSessionSupport[NodeIndex].NodeIndex = NodeIndex;
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT, &m_dProtectedResourceSessionSupport[NodeIndex], sizeof(m_dProtectedResourceSessionSupport[NodeIndex]))))
+ {
+ m_dProtectedResourceSessionSupport[NodeIndex].Support = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
+ }
+
+ m_dArchitecture1[NodeIndex].NodeIndex = NodeIndex;
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE1, &m_dArchitecture1[NodeIndex], sizeof(m_dArchitecture1[NodeIndex]))))
+ {
+ D3D12_FEATURE_DATA_ARCHITECTURE dArchLocal = {};
+ dArchLocal.NodeIndex = NodeIndex;
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &dArchLocal, sizeof(dArchLocal))))
+ {
+ dArchLocal.TileBasedRenderer = false;
+ dArchLocal.UMA = false;
+ dArchLocal.CacheCoherentUMA = false;
+ }
+
+ m_dArchitecture1[NodeIndex].TileBasedRenderer = dArchLocal.TileBasedRenderer;
+ m_dArchitecture1[NodeIndex].UMA = dArchLocal.UMA;
+ m_dArchitecture1[NodeIndex].CacheCoherentUMA = dArchLocal.CacheCoherentUMA;
+ m_dArchitecture1[NodeIndex].IsolatedMMU = false;
+ }
+
+ m_dSerialization[NodeIndex].NodeIndex = NodeIndex;
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SERIALIZATION, &m_dSerialization[NodeIndex], sizeof(m_dSerialization[NodeIndex]))))
+ {
+ m_dSerialization[NodeIndex].HeapSerializationTier = D3D12_HEAP_SERIALIZATION_TIER_0;
+ }
+
+ m_dProtectedResourceSessionTypeCount[NodeIndex].NodeIndex = NodeIndex;
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &m_dProtectedResourceSessionTypeCount[NodeIndex], sizeof(m_dProtectedResourceSessionTypeCount[NodeIndex]))))
+ {
+ m_dProtectedResourceSessionTypeCount[NodeIndex].Count = 0;
+ }
+
+ // Special procedure to initialize local protected resource session types structs
+ // Must wait until session type count initialized
+ QueryProtectedResourceSessionTypes(NodeIndex, m_dProtectedResourceSessionTypeCount[NodeIndex].Count);
+ }
+
+ // Initialize features that requires highest version check
+ if (FAILED(m_hStatus = QueryHighestShaderModel()))
+ {
+ return m_hStatus;
+ }
+
+ if (FAILED(m_hStatus = QueryHighestRootSignatureVersion()))
+ {
+ return m_hStatus;
+ }
+
+ // Initialize Feature Levels data
+ if (FAILED(m_hStatus = QueryHighestFeatureLevel()))
+ {
+ return m_hStatus;
+ }
+
+ return m_hStatus;
+}
+
+// 0: D3D12_OPTIONS
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, DoublePrecisionFloatShaderOps);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, OutputMergerLogicOp);
+FEATURE_SUPPORT_GET(D3D12_SHADER_MIN_PRECISION_SUPPORT, m_dOptions, MinPrecisionSupport);
+FEATURE_SUPPORT_GET(D3D12_TILED_RESOURCES_TIER, m_dOptions, TiledResourcesTier);
+FEATURE_SUPPORT_GET(D3D12_RESOURCE_BINDING_TIER, m_dOptions, ResourceBindingTier);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, PSSpecifiedStencilRefSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, TypedUAVLoadAdditionalFormats);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, ROVsSupported);
+FEATURE_SUPPORT_GET(D3D12_CONSERVATIVE_RASTERIZATION_TIER, m_dOptions, ConservativeRasterizationTier);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, StandardSwizzle64KBSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, CrossAdapterRowMajorTextureSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
+FEATURE_SUPPORT_GET(D3D12_RESOURCE_HEAP_TIER, m_dOptions, ResourceHeapTier);
+
+// Special procedure for handling caps that is also part of other features
+inline D3D12_CROSS_NODE_SHARING_TIER CD3DX12FeatureSupport::CrossNodeSharingTier() const noexcept
+{
+ if (m_dCrossNode.SharingTier > D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED)
+ {
+ return m_dCrossNode.SharingTier;
+ }
+ else
+ {
+ return m_dOptions.CrossNodeSharingTier;
+ }
+}
+
+inline UINT CD3DX12FeatureSupport::MaxGPUVirtualAddressBitsPerResource() const noexcept
+{
+ if (m_dOptions.MaxGPUVirtualAddressBitsPerResource > 0)
+ {
+ return m_dOptions.MaxGPUVirtualAddressBitsPerResource;
+ }
+ else
+ {
+ return m_dGPUVASupport.MaxGPUVirtualAddressBitsPerResource;
+ }
+}
+
+// 1: Architecture
+// Combined with Architecture1
+
+// 2: Feature Levels
+// Simply returns the highest supported feature level
+inline D3D_FEATURE_LEVEL CD3DX12FeatureSupport::MaxSupportedFeatureLevel() const noexcept
+{
+ return m_eMaxFeatureLevel;
+}
+
+// 3: Feature Format Support
+inline HRESULT CD3DX12FeatureSupport::FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const
+{
+ D3D12_FEATURE_DATA_FORMAT_SUPPORT dFormatSupport;
+ dFormatSupport.Format = Format;
+
+ // It is possible that the function call returns an error
+ HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &dFormatSupport, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));
+
+ Support1 = dFormatSupport.Support1;
+ Support2 = dFormatSupport.Support2; // Two outputs. Probably better just to take in the struct as an argument?
+
+ return result;
+}
+
+// 4: Multisample Quality Levels
+inline HRESULT CD3DX12FeatureSupport::MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const
+{
+ D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS dMultisampleQualityLevels;
+ dMultisampleQualityLevels.Format = Format;
+ dMultisampleQualityLevels.SampleCount = SampleCount;
+ dMultisampleQualityLevels.Flags = Flags;
+
+ HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &dMultisampleQualityLevels, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
+
+ if (SUCCEEDED(result))
+ {
+ NumQualityLevels = dMultisampleQualityLevels.NumQualityLevels;
+ }
+ else
+ {
+ NumQualityLevels = 0;
+ }
+
+ return result;
+}
+
+// 5: Format Info
+inline HRESULT CD3DX12FeatureSupport::FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const
+{
+ D3D12_FEATURE_DATA_FORMAT_INFO dFormatInfo;
+ dFormatInfo.Format = Format;
+
+ HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &dFormatInfo, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
+ if (FAILED(result))
+ {
+ PlaneCount = 0;
+ }
+ else
+ {
+ PlaneCount = dFormatInfo.PlaneCount;
+ }
+ return result;
+}
+
+// 6: GPU Virtual Address Support
+// MaxGPUVirtualAddressBitsPerResource handled in D3D12Options
+FEATURE_SUPPORT_GET(UINT, m_dGPUVASupport, MaxGPUVirtualAddressBitsPerProcess);
+
+// 7: Shader Model
+inline D3D_SHADER_MODEL CD3DX12FeatureSupport::HighestShaderModel() const noexcept
+{
+ return m_dShaderModel.HighestShaderModel;
+}
+
+// 8: D3D12 Options1
+FEATURE_SUPPORT_GET(BOOL, m_dOptions1, WaveOps);
+FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMin);
+FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMax);
+FEATURE_SUPPORT_GET(UINT, m_dOptions1, TotalLaneCount);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions1, ExpandedComputeResourceStates);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions1, Int64ShaderOps);
+
+// 10: Protected Resource Session Support
+inline D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS CD3DX12FeatureSupport::ProtectedResourceSessionSupport(UINT NodeIndex) const
+{
+ return m_dProtectedResourceSessionSupport[NodeIndex].Support;
+}
+
+// 12: Root Signature
+inline D3D_ROOT_SIGNATURE_VERSION CD3DX12FeatureSupport::HighestRootSignatureVersion() const noexcept
+{
+ return m_dRootSignature.HighestVersion;
+}
+
+// 16: Architecture1
+// Same data fields can be queried from m_dArchitecture
+FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, TileBasedRenderer);
+FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, UMA);
+FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, CacheCoherentUMA);
+FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, IsolatedMMU);
+
+// 18: D3D12 Options2
+FEATURE_SUPPORT_GET(BOOL, m_dOptions2, DepthBoundsTestSupported);
+FEATURE_SUPPORT_GET(D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, m_dOptions2, ProgrammableSamplePositionsTier);
+
+// 19: Shader Cache
+FEATURE_SUPPORT_GET_NAME(D3D12_SHADER_CACHE_SUPPORT_FLAGS, m_dShaderCache, SupportFlags, ShaderCacheSupportFlags);
+
+// 20: Command Queue Priority
+inline BOOL CD3DX12FeatureSupport::CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority)
+{
+ m_dCommandQueuePriority.CommandListType = CommandListType;
+ m_dCommandQueuePriority.Priority = Priority;
+
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_COMMAND_QUEUE_PRIORITY, &m_dCommandQueuePriority, sizeof(D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY))))
+ {
+ return false;
+ }
+
+ return m_dCommandQueuePriority.PriorityForTypeIsSupported;
+}
+
+// 21: D3D12 Options3
+FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CopyQueueTimestampQueriesSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CastingFullyTypedFormatSupported);
+FEATURE_SUPPORT_GET(D3D12_COMMAND_LIST_SUPPORT_FLAGS, m_dOptions3, WriteBufferImmediateSupportFlags);
+FEATURE_SUPPORT_GET(D3D12_VIEW_INSTANCING_TIER, m_dOptions3, ViewInstancingTier);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions3, BarycentricsSupported);
+
+// 22: Existing Heaps
+FEATURE_SUPPORT_GET_NAME(BOOL, m_dExistingHeaps, Supported, ExistingHeapsSupported);
+
+// 23: D3D12 Options4
+FEATURE_SUPPORT_GET(BOOL, m_dOptions4, MSAA64KBAlignedTextureSupported);
+FEATURE_SUPPORT_GET(D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, m_dOptions4, SharedResourceCompatibilityTier);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions4, Native16BitShaderOpsSupported);
+
+// 24: Serialization
+FEATURE_SUPPORT_GET_NODE_INDEXED(D3D12_HEAP_SERIALIZATION_TIER, m_dSerialization, HeapSerializationTier);
+
+// 25: Cross Node
+// CrossNodeSharingTier handled in D3D12Options
+FEATURE_SUPPORT_GET_NAME(BOOL, m_dCrossNode, AtomicShaderInstructions, CrossNodeAtomicShaderInstructions);
+
+// 27: D3D12 Options5
+FEATURE_SUPPORT_GET(BOOL, m_dOptions5, SRVOnlyTiledResourceTier3);
+FEATURE_SUPPORT_GET(D3D12_RENDER_PASS_TIER, m_dOptions5, RenderPassesTier);
+FEATURE_SUPPORT_GET(D3D12_RAYTRACING_TIER, m_dOptions5, RaytracingTier);
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+// 28: Displayable
+FEATURE_SUPPORT_GET(BOOL, m_dDisplayable, DisplayableTexture);
+// SharedResourceCompatibilityTier handled in D3D12Options4
+#endif
+
+// 30: D3D12 Options6
+FEATURE_SUPPORT_GET(BOOL, m_dOptions6, AdditionalShadingRatesSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions6, PerPrimitiveShadingRateSupportedWithViewportIndexing);
+FEATURE_SUPPORT_GET(D3D12_VARIABLE_SHADING_RATE_TIER, m_dOptions6, VariableShadingRateTier);
+FEATURE_SUPPORT_GET(UINT, m_dOptions6, ShadingRateImageTileSize);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions6, BackgroundProcessingSupported);
+
+// 31: Query Meta Command
+// Keep the original call routine
+inline HRESULT CD3DX12FeatureSupport::QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const
+{
+ return m_pDevice->CheckFeatureSupport(D3D12_FEATURE_QUERY_META_COMMAND, &dQueryMetaCommand, sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND));
+}
+
+// 32: D3D12 Options7
+FEATURE_SUPPORT_GET(D3D12_MESH_SHADER_TIER, m_dOptions7, MeshShaderTier);
+FEATURE_SUPPORT_GET(D3D12_SAMPLER_FEEDBACK_TIER, m_dOptions7, SamplerFeedbackTier);
+
+// 33: Protected Resource Session Type Count
+FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(UINT, m_dProtectedResourceSessionTypeCount, Count, ProtectedResourceSessionTypeCount);
+
+// 34: Protected Resource Session Types
+FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(std::vector, m_dProtectedResourceSessionTypes, TypeVec, ProtectedResourceSessionTypes);
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+// 36: Options8
+FEATURE_SUPPORT_GET(BOOL, m_dOptions8, UnalignedBlockTexturesSupported);
+
+// 37: Options9
+FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderPipelineStatsSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderSupportsFullRangeRenderTargetArrayIndex);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnTypedResourceSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnGroupSharedSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions9, DerivativesInMeshAndAmplificationShadersSupported);
+FEATURE_SUPPORT_GET(D3D12_WAVE_MMA_TIER, m_dOptions9, WaveMMATier);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
+// 39: Options10
+FEATURE_SUPPORT_GET(BOOL, m_dOptions10, VariableRateShadingSumCombinerSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions10, MeshShaderPerPrimitiveShadingRateSupported);
+
+// 40: Options11
+FEATURE_SUPPORT_GET(BOOL, m_dOptions11, AtomicInt64OnDescriptorHeapResourceSupported);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
+// 41: Options12
+FEATURE_SUPPORT_GET(D3D12_TRI_STATE, m_dOptions12, MSPrimitivesPipelineStatisticIncludesCulledPrimitives);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions12, EnhancedBarriersSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions12, RelaxedFormatCastingSupported);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
+// 42: Options13
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedBufferTextureCopyPitchSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedVertexElementAlignmentSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportHeightFlipsYSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportDepthFlipsZSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, TextureCopyBetweenDimensionsSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions13, AlphaBlendFactorSupported);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+// 43: Options14
+FEATURE_SUPPORT_GET(BOOL, m_dOptions14, AdvancedTextureOpsSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions14, WriteableMSAATexturesSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions14, IndependentFrontAndBackStencilRefMaskSupported);
+
+// 44: Options15
+FEATURE_SUPPORT_GET(BOOL, m_dOptions15, TriangleFanSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions15, DynamicIndexBufferStripCutSupported);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+// 45: Options16
+FEATURE_SUPPORT_GET(BOOL, m_dOptions16, DynamicDepthBiasSupported);
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+FEATURE_SUPPORT_GET(BOOL, m_dOptions16, GPUUploadHeapSupported);
+
+// 46: Options17
+FEATURE_SUPPORT_GET(BOOL, m_dOptions17, NonNormalizedCoordinateSamplersSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions17, ManualWriteTrackingResourceSupported);
+
+// 47: Option18
+FEATURE_SUPPORT_GET(BOOL, m_dOptions18, RenderPassesValid);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+FEATURE_SUPPORT_GET(BOOL, m_dOptions19, MismatchingOutputDimensionsSupported);
+FEATURE_SUPPORT_GET(UINT, m_dOptions19, SupportedSampleCountsWithNoOutputs);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions19, PointSamplingAddressesNeverRoundUp);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions19, RasterizerDesc2Supported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions19, NarrowQuadrilateralLinesSupported);
+FEATURE_SUPPORT_GET(BOOL, m_dOptions19, AnisoFilterWithPointMipSupported);
+FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSize);
+FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSizeWithStaticSamplers);
+FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+// 49: Options20
+FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+// 50: Options21
+FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
+FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+// 51: TightAlignment
+FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
+#endif
+
+// Helper function to decide the highest shader model supported by the system
+// Stores the result in m_dShaderModel
+// Must be updated whenever a new shader model is added to the d3d12.h header
+inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
+{
+ // Check support in descending order
+ HRESULT result;
+
+ const D3D_SHADER_MODEL allModelVersions[] =
+ {
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D_SHADER_MODEL_6_9,
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ D3D_SHADER_MODEL_6_8,
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+ D3D_SHADER_MODEL_6_7,
+#endif
+ D3D_SHADER_MODEL_6_6,
+ D3D_SHADER_MODEL_6_5,
+ D3D_SHADER_MODEL_6_4,
+ D3D_SHADER_MODEL_6_3,
+ D3D_SHADER_MODEL_6_2,
+ D3D_SHADER_MODEL_6_1,
+ D3D_SHADER_MODEL_6_0,
+ D3D_SHADER_MODEL_5_1
+ };
+ constexpr size_t numModelVersions = sizeof(allModelVersions) / sizeof(D3D_SHADER_MODEL);
+
+ for (size_t i = 0; i < numModelVersions; i++)
+ {
+ m_dShaderModel.HighestShaderModel = allModelVersions[i];
+ result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &m_dShaderModel, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL));
+ if (result != E_INVALIDARG)
+ {
+ // Indicates that the version is recognizable by the runtime and stored in the struct
+ // Also terminate on unexpected error code
+ if (FAILED(result))
+ {
+ m_dShaderModel.HighestShaderModel = static_cast(0);
+ }
+ return result;
+ }
+ }
+
+ // Shader model may not be supported. Continue the rest initializations
+ m_dShaderModel.HighestShaderModel = static_cast(0);
+ return S_OK;
+}
+
+// Helper function to decide the highest root signature supported
+// Must be updated whenever a new root signature version is added to the d3d12.h header
+inline HRESULT CD3DX12FeatureSupport::QueryHighestRootSignatureVersion()
+{
+ HRESULT result;
+
+ const D3D_ROOT_SIGNATURE_VERSION allRootSignatureVersions[] =
+ {
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ D3D_ROOT_SIGNATURE_VERSION_1_2,
+#endif
+ D3D_ROOT_SIGNATURE_VERSION_1_1,
+ D3D_ROOT_SIGNATURE_VERSION_1_0,
+ D3D_ROOT_SIGNATURE_VERSION_1,
+ };
+ constexpr size_t numRootSignatureVersions = sizeof(allRootSignatureVersions) / sizeof(D3D_ROOT_SIGNATURE_VERSION);
+
+ for (size_t i = 0; i < numRootSignatureVersions; i++)
+ {
+ m_dRootSignature.HighestVersion = allRootSignatureVersions[i];
+ result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ROOT_SIGNATURE, &m_dRootSignature, sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE));
+ if (result != E_INVALIDARG)
+ {
+ if (FAILED(result))
+ {
+ m_dRootSignature.HighestVersion = static_cast(0);
+ }
+ // If succeeded, the highest version is already written into the member struct
+ return result;
+ }
+ }
+
+ // No version left. Set to invalid value and continue.
+ m_dRootSignature.HighestVersion = static_cast(0);
+ return S_OK;
+}
+
+// Helper funcion to decide the highest feature level
+inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
+{
+ HRESULT result;
+
+ // Check against a list of all feature levels present in d3dcommon.h
+ // Needs to be updated for future feature levels
+ const D3D_FEATURE_LEVEL allLevels[] =
+ {
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
+ D3D_FEATURE_LEVEL_12_2,
+#endif
+ D3D_FEATURE_LEVEL_12_1,
+ D3D_FEATURE_LEVEL_12_0,
+ D3D_FEATURE_LEVEL_11_1,
+ D3D_FEATURE_LEVEL_11_0,
+ D3D_FEATURE_LEVEL_10_1,
+ D3D_FEATURE_LEVEL_10_0,
+ D3D_FEATURE_LEVEL_9_3,
+ D3D_FEATURE_LEVEL_9_2,
+ D3D_FEATURE_LEVEL_9_1,
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
+ D3D_FEATURE_LEVEL_1_0_CORE,
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
+ D3D_FEATURE_LEVEL_1_0_GENERIC
+#endif
+ };
+
+ D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
+ dFeatureLevel.NumFeatureLevels = static_cast(sizeof(allLevels) / sizeof(D3D_FEATURE_LEVEL));
+ dFeatureLevel.pFeatureLevelsRequested = allLevels;
+
+ result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &dFeatureLevel, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
+ if (SUCCEEDED(result))
+ {
+ m_eMaxFeatureLevel = dFeatureLevel.MaxSupportedFeatureLevel;
+ }
+ else
+ {
+ m_eMaxFeatureLevel = static_cast(0);
+
+ if (result == DXGI_ERROR_UNSUPPORTED)
+ {
+ // Indicates that none supported. Continue initialization
+ result = S_OK;
+ }
+ }
+ return result;
+}
+
+// Helper function to initialize local protected resource session types structs
+inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count)
+{
+ auto& CurrentPRSTypes = m_dProtectedResourceSessionTypes[NodeIndex];
+ CurrentPRSTypes.NodeIndex = NodeIndex;
+ CurrentPRSTypes.Count = Count;
+ CurrentPRSTypes.TypeVec.resize(CurrentPRSTypes.Count);
+ CurrentPRSTypes.pTypes = CurrentPRSTypes.TypeVec.data();
+
+ HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES, &m_dProtectedResourceSessionTypes[NodeIndex], sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES));
+ if (FAILED(result))
+ {
+ // Resize TypeVec to empty
+ CurrentPRSTypes.TypeVec.clear();
+ }
+
+ return result;
+}
+
+#undef FEATURE_SUPPORT_GET
+#undef FEATURE_SUPPORT_GET_NAME
+#undef FEATURE_SUPPORT_GET_NODE_INDEXED
+#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
+
+// end CD3DX12FeatureSupport
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_core.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_core.h
new file mode 100644
index 000000000..092a039a9
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_core.h
@@ -0,0 +1,2072 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include
+#include "d3d12.h"
+#include "d3dx12_default.h"
+
+//------------------------------------------------------------------------------------------------
+#ifndef D3DX12_ASSERT
+ #ifdef assert
+ #define D3DX12_ASSERT(x) assert(x)
+ #else
+ #define D3DX12_ASSERT(x)
+ #endif
+#endif
+
+//------------------------------------------------------------------------------------------------
+template
+inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
+{
+ // This cast is useful for passing strongly typed command list pointers into
+ // ExecuteCommandLists.
+ // This cast is valid as long as the const-ness is respected. D3D12 APIs do
+ // respect the const-ness of their arguments.
+ return reinterpret_cast(pp);
+}
+
+#ifdef D3DX12_USE_ARRAY_COM_PTR
+#include
+//------------------------------------------------------------------------------------------------
+// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
+template
+class CArrayComPtr
+{
+ std::vector<_T *> m_array;
+
+public:
+ class CProxyPtr
+ {
+ _T *&pObj;
+
+ CProxyPtr(_T *&obj) :
+ pObj(obj) {}
+
+ public:
+ operator _T*() { return pObj; }
+ _T **operator&() { return &pObj; }
+ CProxyPtr &operator=(_T*&obj)
+ {
+ if(pObj)
+ pObj->Release();
+
+ pObj = obj;
+
+ if(pObj)
+ pObj->AddRef();
+ }
+
+ friend class CArrayComPtr<_T>;
+ };
+
+public:
+ CArrayComPtr() = default;
+
+ CArrayComPtr(size_t size) :
+ m_array(size) {
+ }
+
+ CArrayComPtr(const CArrayComPtr &o)
+ {
+ m_array = o.m_array;
+ for (size_t i = 0; i < m_array.size(); ++i)
+ {
+ m_array[i]->AddRef();
+ }
+ }
+
+ CArrayComPtr(CArrayComPtr &&o) = default;
+
+ ~CArrayComPtr()
+ {
+ for (auto ptr : m_array)
+ {
+ if (ptr)
+ {
+ ptr->Release();
+ }
+ }
+ }
+
+ _T *const *Get() { return m_array.data(); }
+
+ void Assign(size_t index, _T *ptr)
+ {
+ if (index >= m_array.size())
+ {
+ Resize(index + 1);
+ }
+
+ // Release the old pointer if it exists
+ if (m_array[index])
+ {
+ m_array[index]->Release();
+ }
+
+ // Assign the new pointer and AddRef it if not null
+ m_array[index] = ptr;
+ if (ptr)
+ {
+ ptr->AddRef();
+ }
+ }
+
+ void Resize(size_t size)
+ {
+ // If shrinking, release any pointers that will be discarded
+ if (size < m_array.size())
+ {
+ for (size_t i = size; i < m_array.size(); ++i)
+ {
+ if (m_array[i])
+ {
+ m_array[i]->Release();
+ }
+ }
+ }
+
+ // Resize the vector, initializing new elements to nullptr
+ m_array.resize(size, nullptr);
+ }
+
+ void PushBack(_T *ptr)
+ {
+ // AddRef if not null
+ if (ptr)
+ {
+ ptr->AddRef();
+ }
+ m_array.push_back(ptr);
+ }
+
+ CProxyPtr operator[](size_t index)
+ {
+ return CProxyPtr(m_array[index]);
+ }
+};
+#endif
+//------------------------------------------------------------------------------------------------
+inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
+{
+ return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
+ l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
+}
+
+//------------------------------------------------------------------------------------------------
+inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RECT : public D3D12_RECT
+{
+ CD3DX12_RECT() = default;
+ explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
+ D3D12_RECT( o )
+ {}
+ explicit CD3DX12_RECT(
+ LONG Left,
+ LONG Top,
+ LONG Right,
+ LONG Bottom ) noexcept
+ {
+ left = Left;
+ top = Top;
+ right = Right;
+ bottom = Bottom;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
+{
+ CD3DX12_VIEWPORT() = default;
+ explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
+ D3D12_VIEWPORT( o )
+ {}
+ explicit CD3DX12_VIEWPORT(
+ FLOAT topLeftX,
+ FLOAT topLeftY,
+ FLOAT width,
+ FLOAT height,
+ FLOAT minDepth = D3D12_MIN_DEPTH,
+ FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
+ {
+ TopLeftX = topLeftX;
+ TopLeftY = topLeftY;
+ Width = width;
+ Height = height;
+ MinDepth = minDepth;
+ MaxDepth = maxDepth;
+ }
+ explicit CD3DX12_VIEWPORT(
+ _In_ ID3D12Resource* pResource,
+ UINT mipSlice = 0,
+ FLOAT topLeftX = 0.0f,
+ FLOAT topLeftY = 0.0f,
+ FLOAT minDepth = D3D12_MIN_DEPTH,
+ FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
+ {
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pResource->GetDesc(&tmpDesc);
+#endif
+ const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
+ const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
+ switch (Desc.Dimension)
+ {
+ case D3D12_RESOURCE_DIMENSION_BUFFER:
+ TopLeftX = topLeftX;
+ TopLeftY = 0.0f;
+ Width = float(Desc.Width) - topLeftX;
+ Height = 1.0f;
+ break;
+ case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
+ TopLeftX = topLeftX;
+ TopLeftY = 0.0f;
+ Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
+ Height = 1.0f;
+ break;
+ case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
+ case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
+ TopLeftX = topLeftX;
+ TopLeftY = topLeftY;
+ Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
+ Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
+ break;
+ default: break;
+ }
+
+ MinDepth = minDepth;
+ MaxDepth = maxDepth;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_BOX : public D3D12_BOX
+{
+ CD3DX12_BOX() = default;
+ explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
+ D3D12_BOX( o )
+ {}
+ explicit CD3DX12_BOX(
+ LONG Left,
+ LONG Right ) noexcept
+ {
+ left = static_cast(Left);
+ top = 0;
+ front = 0;
+ right = static_cast(Right);
+ bottom = 1;
+ back = 1;
+ }
+ explicit CD3DX12_BOX(
+ LONG Left,
+ LONG Top,
+ LONG Right,
+ LONG Bottom ) noexcept
+ {
+ left = static_cast(Left);
+ top = static_cast(Top);
+ front = 0;
+ right = static_cast(Right);
+ bottom = static_cast(Bottom);
+ back = 1;
+ }
+ explicit CD3DX12_BOX(
+ LONG Left,
+ LONG Top,
+ LONG Front,
+ LONG Right,
+ LONG Bottom,
+ LONG Back ) noexcept
+ {
+ left = static_cast(Left);
+ top = static_cast(Top);
+ front = static_cast(Front);
+ right = static_cast(Right);
+ bottom = static_cast(Bottom);
+ back = static_cast(Back);
+ }
+};
+inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
+{
+ return l.left == r.left && l.top == r.top && l.front == r.front &&
+ l.right == r.right && l.bottom == r.bottom && l.back == r.back;
+}
+inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
+{
+ CD3DX12_DEPTH_STENCIL_DESC() = default;
+ explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
+ D3D12_DEPTH_STENCIL_DESC( o )
+ {}
+ explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ DepthEnable = TRUE;
+ DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
+ DepthFunc = D3D12_COMPARISON_FUNC_LESS;
+ StencilEnable = FALSE;
+ StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
+ StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
+ const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
+ { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
+ FrontFace = defaultStencilOp;
+ BackFace = defaultStencilOp;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC(
+ BOOL depthEnable,
+ D3D12_DEPTH_WRITE_MASK depthWriteMask,
+ D3D12_COMPARISON_FUNC depthFunc,
+ BOOL stencilEnable,
+ UINT8 stencilReadMask,
+ UINT8 stencilWriteMask,
+ D3D12_STENCIL_OP frontStencilFailOp,
+ D3D12_STENCIL_OP frontStencilDepthFailOp,
+ D3D12_STENCIL_OP frontStencilPassOp,
+ D3D12_COMPARISON_FUNC frontStencilFunc,
+ D3D12_STENCIL_OP backStencilFailOp,
+ D3D12_STENCIL_OP backStencilDepthFailOp,
+ D3D12_STENCIL_OP backStencilPassOp,
+ D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
+ {
+ DepthEnable = depthEnable;
+ DepthWriteMask = depthWriteMask;
+ DepthFunc = depthFunc;
+ StencilEnable = stencilEnable;
+ StencilReadMask = stencilReadMask;
+ StencilWriteMask = stencilWriteMask;
+ FrontFace.StencilFailOp = frontStencilFailOp;
+ FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
+ FrontFace.StencilPassOp = frontStencilPassOp;
+ FrontFace.StencilFunc = frontStencilFunc;
+ BackFace.StencilFailOp = backStencilFailOp;
+ BackFace.StencilDepthFailOp = backStencilDepthFailOp;
+ BackFace.StencilPassOp = backStencilPassOp;
+ BackFace.StencilFunc = backStencilFunc;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
+{
+ CD3DX12_DEPTH_STENCIL_DESC1() = default;
+ explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
+ D3D12_DEPTH_STENCIL_DESC1( o )
+ {}
+ explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
+ {
+ DepthEnable = o.DepthEnable;
+ DepthWriteMask = o.DepthWriteMask;
+ DepthFunc = o.DepthFunc;
+ StencilEnable = o.StencilEnable;
+ StencilReadMask = o.StencilReadMask;
+ StencilWriteMask = o.StencilWriteMask;
+ FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
+ FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
+ FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
+ FrontFace.StencilFunc = o.FrontFace.StencilFunc;
+ BackFace.StencilFailOp = o.BackFace.StencilFailOp;
+ BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
+ BackFace.StencilPassOp = o.BackFace.StencilPassOp;
+ BackFace.StencilFunc = o.BackFace.StencilFunc;
+ DepthBoundsTestEnable = FALSE;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
+ {
+ DepthEnable = TRUE;
+ DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
+ DepthFunc = D3D12_COMPARISON_FUNC_LESS;
+ StencilEnable = FALSE;
+ StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
+ StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
+ const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
+ { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
+ FrontFace = defaultStencilOp;
+ BackFace = defaultStencilOp;
+ DepthBoundsTestEnable = FALSE;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC1(
+ BOOL depthEnable,
+ D3D12_DEPTH_WRITE_MASK depthWriteMask,
+ D3D12_COMPARISON_FUNC depthFunc,
+ BOOL stencilEnable,
+ UINT8 stencilReadMask,
+ UINT8 stencilWriteMask,
+ D3D12_STENCIL_OP frontStencilFailOp,
+ D3D12_STENCIL_OP frontStencilDepthFailOp,
+ D3D12_STENCIL_OP frontStencilPassOp,
+ D3D12_COMPARISON_FUNC frontStencilFunc,
+ D3D12_STENCIL_OP backStencilFailOp,
+ D3D12_STENCIL_OP backStencilDepthFailOp,
+ D3D12_STENCIL_OP backStencilPassOp,
+ D3D12_COMPARISON_FUNC backStencilFunc,
+ BOOL depthBoundsTestEnable ) noexcept
+ {
+ DepthEnable = depthEnable;
+ DepthWriteMask = depthWriteMask;
+ DepthFunc = depthFunc;
+ StencilEnable = stencilEnable;
+ StencilReadMask = stencilReadMask;
+ StencilWriteMask = stencilWriteMask;
+ FrontFace.StencilFailOp = frontStencilFailOp;
+ FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
+ FrontFace.StencilPassOp = frontStencilPassOp;
+ FrontFace.StencilFunc = frontStencilFunc;
+ BackFace.StencilFailOp = backStencilFailOp;
+ BackFace.StencilDepthFailOp = backStencilDepthFailOp;
+ BackFace.StencilPassOp = backStencilPassOp;
+ BackFace.StencilFunc = backStencilFunc;
+ DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+ operator D3D12_DEPTH_STENCIL_DESC() const noexcept
+ {
+ D3D12_DEPTH_STENCIL_DESC D;
+ D.DepthEnable = DepthEnable;
+ D.DepthWriteMask = DepthWriteMask;
+ D.DepthFunc = DepthFunc;
+ D.StencilEnable = StencilEnable;
+ D.StencilReadMask = StencilReadMask;
+ D.StencilWriteMask = StencilWriteMask;
+ D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
+ D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
+ D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
+ D.FrontFace.StencilFunc = FrontFace.StencilFunc;
+ D.BackFace.StencilFailOp = BackFace.StencilFailOp;
+ D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
+ D.BackFace.StencilPassOp = BackFace.StencilPassOp;
+ D.BackFace.StencilFunc = BackFace.StencilFunc;
+ return D;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+struct CD3DX12_DEPTH_STENCIL_DESC2 : public D3D12_DEPTH_STENCIL_DESC2
+{
+ CD3DX12_DEPTH_STENCIL_DESC2() = default;
+ explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC2& o ) noexcept :
+ D3D12_DEPTH_STENCIL_DESC2( o )
+ {}
+ explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept
+ {
+ DepthEnable = o.DepthEnable;
+ DepthWriteMask = o.DepthWriteMask;
+ DepthFunc = o.DepthFunc;
+ StencilEnable = o.StencilEnable;
+ FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
+ FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
+ FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
+ FrontFace.StencilFunc = o.FrontFace.StencilFunc;
+ FrontFace.StencilReadMask = o.StencilReadMask;
+ FrontFace.StencilWriteMask = o.StencilWriteMask;
+
+ BackFace.StencilFailOp = o.BackFace.StencilFailOp;
+ BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
+ BackFace.StencilPassOp = o.BackFace.StencilPassOp;
+ BackFace.StencilFunc = o.BackFace.StencilFunc;
+ BackFace.StencilReadMask = o.StencilReadMask;
+ BackFace.StencilWriteMask = o.StencilWriteMask;
+ DepthBoundsTestEnable = o.DepthBoundsTestEnable;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
+ {
+ DepthEnable = o.DepthEnable;
+ DepthWriteMask = o.DepthWriteMask;
+ DepthFunc = o.DepthFunc;
+ StencilEnable = o.StencilEnable;
+
+ FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
+ FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
+ FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
+ FrontFace.StencilFunc = o.FrontFace.StencilFunc;
+ FrontFace.StencilReadMask = o.StencilReadMask;
+ FrontFace.StencilWriteMask = o.StencilWriteMask;
+
+ BackFace.StencilFailOp = o.BackFace.StencilFailOp;
+ BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
+ BackFace.StencilPassOp = o.BackFace.StencilPassOp;
+ BackFace.StencilFunc = o.BackFace.StencilFunc;
+ BackFace.StencilReadMask = o.StencilReadMask;
+ BackFace.StencilWriteMask = o.StencilWriteMask;
+
+ DepthBoundsTestEnable = FALSE;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC2( CD3DX12_DEFAULT ) noexcept
+ {
+ DepthEnable = TRUE;
+ DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
+ DepthFunc = D3D12_COMPARISON_FUNC_LESS;
+ StencilEnable = FALSE;
+ const D3D12_DEPTH_STENCILOP_DESC1 defaultStencilOp =
+ { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_DEFAULT_STENCIL_READ_MASK, D3D12_DEFAULT_STENCIL_WRITE_MASK };
+ FrontFace = defaultStencilOp;
+ BackFace = defaultStencilOp;
+ DepthBoundsTestEnable = FALSE;
+ }
+ explicit CD3DX12_DEPTH_STENCIL_DESC2(
+ BOOL depthEnable,
+ D3D12_DEPTH_WRITE_MASK depthWriteMask,
+ D3D12_COMPARISON_FUNC depthFunc,
+ BOOL stencilEnable,
+ D3D12_STENCIL_OP frontStencilFailOp,
+ D3D12_STENCIL_OP frontStencilDepthFailOp,
+ D3D12_STENCIL_OP frontStencilPassOp,
+ D3D12_COMPARISON_FUNC frontStencilFunc,
+ UINT8 frontStencilReadMask,
+ UINT8 frontStencilWriteMask,
+ D3D12_STENCIL_OP backStencilFailOp,
+ D3D12_STENCIL_OP backStencilDepthFailOp,
+ D3D12_STENCIL_OP backStencilPassOp,
+ D3D12_COMPARISON_FUNC backStencilFunc,
+ UINT8 backStencilReadMask,
+ UINT8 backStencilWriteMask,
+ BOOL depthBoundsTestEnable ) noexcept
+ {
+ DepthEnable = depthEnable;
+ DepthWriteMask = depthWriteMask;
+ DepthFunc = depthFunc;
+ StencilEnable = stencilEnable;
+
+ FrontFace.StencilFailOp = frontStencilFailOp;
+ FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
+ FrontFace.StencilPassOp = frontStencilPassOp;
+ FrontFace.StencilFunc = frontStencilFunc;
+ FrontFace.StencilReadMask = frontStencilReadMask;
+ FrontFace.StencilWriteMask = frontStencilWriteMask;
+
+ BackFace.StencilFailOp = backStencilFailOp;
+ BackFace.StencilDepthFailOp = backStencilDepthFailOp;
+ BackFace.StencilPassOp = backStencilPassOp;
+ BackFace.StencilFunc = backStencilFunc;
+ BackFace.StencilReadMask = backStencilReadMask;
+ BackFace.StencilWriteMask = backStencilWriteMask;
+
+ DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+
+ operator D3D12_DEPTH_STENCIL_DESC() const noexcept
+ {
+ D3D12_DEPTH_STENCIL_DESC D;
+ D.DepthEnable = DepthEnable;
+ D.DepthWriteMask = DepthWriteMask;
+ D.DepthFunc = DepthFunc;
+ D.StencilEnable = StencilEnable;
+ D.StencilReadMask = FrontFace.StencilReadMask;
+ D.StencilWriteMask = FrontFace.StencilWriteMask;
+ D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
+ D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
+ D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
+ D.FrontFace.StencilFunc = FrontFace.StencilFunc;
+ D.BackFace.StencilFailOp = BackFace.StencilFailOp;
+ D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
+ D.BackFace.StencilPassOp = BackFace.StencilPassOp;
+ D.BackFace.StencilFunc = BackFace.StencilFunc;
+ return D;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 606
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
+{
+ CD3DX12_BLEND_DESC() = default;
+ explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
+ D3D12_BLEND_DESC( o )
+ {}
+ explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ AlphaToCoverageEnable = FALSE;
+ IndependentBlendEnable = FALSE;
+ const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
+ {
+ FALSE,FALSE,
+ D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
+ D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
+ D3D12_LOGIC_OP_NOOP,
+ D3D12_COLOR_WRITE_ENABLE_ALL,
+ };
+ for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
+ RenderTarget[ i ] = defaultRenderTargetBlendDesc;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
+{
+ CD3DX12_RASTERIZER_DESC() = default;
+ explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
+ D3D12_RASTERIZER_DESC( o )
+ {}
+ explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ FillMode = D3D12_FILL_MODE_SOLID;
+ CullMode = D3D12_CULL_MODE_BACK;
+ FrontCounterClockwise = FALSE;
+ DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
+ DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
+ SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
+ DepthClipEnable = TRUE;
+ MultisampleEnable = FALSE;
+ AntialiasedLineEnable = FALSE;
+ ForcedSampleCount = 0;
+ ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
+ }
+ explicit CD3DX12_RASTERIZER_DESC(
+ D3D12_FILL_MODE fillMode,
+ D3D12_CULL_MODE cullMode,
+ BOOL frontCounterClockwise,
+ INT depthBias,
+ FLOAT depthBiasClamp,
+ FLOAT slopeScaledDepthBias,
+ BOOL depthClipEnable,
+ BOOL multisampleEnable,
+ BOOL antialiasedLineEnable,
+ UINT forcedSampleCount,
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
+ {
+ FillMode = fillMode;
+ CullMode = cullMode;
+ FrontCounterClockwise = frontCounterClockwise;
+ DepthBias = depthBias;
+ DepthBiasClamp = depthBiasClamp;
+ SlopeScaledDepthBias = slopeScaledDepthBias;
+ DepthClipEnable = depthClipEnable;
+ MultisampleEnable = multisampleEnable;
+ AntialiasedLineEnable = antialiasedLineEnable;
+ ForcedSampleCount = forcedSampleCount;
+ ConservativeRaster = conservativeRaster;
+ }
+};
+
+
+//------------------------------------------------------------------------------------------------
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+struct CD3DX12_RASTERIZER_DESC1 : public D3D12_RASTERIZER_DESC1
+{
+ CD3DX12_RASTERIZER_DESC1() = default;
+ explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC1& o) noexcept :
+ D3D12_RASTERIZER_DESC1(o)
+
+ {
+ }
+ explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC& o) noexcept
+ {
+ FillMode = o.FillMode;
+ CullMode = o.CullMode;
+ FrontCounterClockwise = o.FrontCounterClockwise;
+ DepthBias = static_cast(o.DepthBias);
+ DepthBiasClamp = o.DepthBiasClamp;
+ SlopeScaledDepthBias = o.SlopeScaledDepthBias;
+ DepthClipEnable = o.DepthClipEnable;
+ MultisampleEnable = o.MultisampleEnable;
+ AntialiasedLineEnable = o.AntialiasedLineEnable;
+ ForcedSampleCount = o.ForcedSampleCount;
+ ConservativeRaster = o.ConservativeRaster;
+ }
+ explicit CD3DX12_RASTERIZER_DESC1(CD3DX12_DEFAULT) noexcept
+ {
+ FillMode = D3D12_FILL_MODE_SOLID;
+ CullMode = D3D12_CULL_MODE_BACK;
+ FrontCounterClockwise = FALSE;
+ DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
+ DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
+ SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
+ DepthClipEnable = TRUE;
+ MultisampleEnable = FALSE;
+ AntialiasedLineEnable = FALSE;
+ ForcedSampleCount = 0;
+ ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
+ }
+ explicit CD3DX12_RASTERIZER_DESC1(
+ D3D12_FILL_MODE fillMode,
+ D3D12_CULL_MODE cullMode,
+ BOOL frontCounterClockwise,
+ FLOAT depthBias,
+ FLOAT depthBiasClamp,
+ FLOAT slopeScaledDepthBias,
+ BOOL depthClipEnable,
+ BOOL multisampleEnable,
+ BOOL antialiasedLineEnable,
+ UINT forcedSampleCount,
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
+ {
+ FillMode = fillMode;
+ CullMode = cullMode;
+ FrontCounterClockwise = frontCounterClockwise;
+ DepthBias = depthBias;
+ DepthBiasClamp = depthBiasClamp;
+ SlopeScaledDepthBias = slopeScaledDepthBias;
+ DepthClipEnable = depthClipEnable;
+ MultisampleEnable = multisampleEnable;
+ AntialiasedLineEnable = antialiasedLineEnable;
+ ForcedSampleCount = forcedSampleCount;
+ ConservativeRaster = conservativeRaster;
+ }
+
+
+ operator D3D12_RASTERIZER_DESC() const noexcept
+ {
+ D3D12_RASTERIZER_DESC o;
+
+ o.FillMode = FillMode;
+ o.CullMode = CullMode;
+ o.FrontCounterClockwise = FrontCounterClockwise;
+ o.DepthBias = static_cast(DepthBias);
+ o.DepthBiasClamp = DepthBiasClamp;
+ o.SlopeScaledDepthBias = SlopeScaledDepthBias;
+ o.DepthClipEnable = DepthClipEnable;
+ o.MultisampleEnable = MultisampleEnable;
+ o.AntialiasedLineEnable = AntialiasedLineEnable;
+ o.ForcedSampleCount = ForcedSampleCount;
+ o.ConservativeRaster = ConservativeRaster;
+
+ return o;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 608
+
+//------------------------------------------------------------------------------------------------
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
+{
+ CD3DX12_RASTERIZER_DESC2() = default;
+ explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC2& o) noexcept :
+ D3D12_RASTERIZER_DESC2(o)
+
+ {
+ }
+ explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC1& o) noexcept
+ {
+ FillMode = o.FillMode;
+ CullMode = o.CullMode;
+ FrontCounterClockwise = o.FrontCounterClockwise;
+ DepthBias = o.DepthBias;
+ DepthBiasClamp = o.DepthBiasClamp;
+ SlopeScaledDepthBias = o.SlopeScaledDepthBias;
+ DepthClipEnable = o.DepthClipEnable;
+ LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
+ if (o.MultisampleEnable)
+ {
+ LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE;
+ }
+ else if (o.AntialiasedLineEnable)
+ {
+ LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED;
+ }
+ ForcedSampleCount = o.ForcedSampleCount;
+ ConservativeRaster = o.ConservativeRaster;
+ }
+ explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC& o) noexcept
+ : CD3DX12_RASTERIZER_DESC2(CD3DX12_RASTERIZER_DESC1(o))
+ {
+ }
+ explicit CD3DX12_RASTERIZER_DESC2(CD3DX12_DEFAULT) noexcept
+ {
+ FillMode = D3D12_FILL_MODE_SOLID;
+ CullMode = D3D12_CULL_MODE_BACK;
+ FrontCounterClockwise = FALSE;
+ DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
+ DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
+ SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
+ DepthClipEnable = TRUE;
+ LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
+ ForcedSampleCount = 0;
+ ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
+ }
+ explicit CD3DX12_RASTERIZER_DESC2(
+ D3D12_FILL_MODE fillMode,
+ D3D12_CULL_MODE cullMode,
+ BOOL frontCounterClockwise,
+ FLOAT depthBias,
+ FLOAT depthBiasClamp,
+ FLOAT slopeScaledDepthBias,
+ BOOL depthClipEnable,
+ D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode,
+ UINT forcedSampleCount,
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
+ {
+ FillMode = fillMode;
+ CullMode = cullMode;
+ FrontCounterClockwise = frontCounterClockwise;
+ DepthBias = depthBias;
+ DepthBiasClamp = depthBiasClamp;
+ SlopeScaledDepthBias = slopeScaledDepthBias;
+ DepthClipEnable = depthClipEnable;
+ LineRasterizationMode = lineRasterizationMode;
+ ForcedSampleCount = forcedSampleCount;
+ ConservativeRaster = conservativeRaster;
+ }
+
+
+ operator D3D12_RASTERIZER_DESC1() const noexcept
+ {
+ D3D12_RASTERIZER_DESC1 o;
+
+ o.FillMode = FillMode;
+ o.CullMode = CullMode;
+ o.FrontCounterClockwise = FrontCounterClockwise;
+ o.DepthBias = DepthBias;
+ o.DepthBiasClamp = DepthBiasClamp;
+ o.SlopeScaledDepthBias = SlopeScaledDepthBias;
+ o.DepthClipEnable = DepthClipEnable;
+ o.MultisampleEnable = FALSE;
+ o.AntialiasedLineEnable = FALSE;
+ if (LineRasterizationMode == D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED)
+ {
+ o.AntialiasedLineEnable = TRUE;
+ }
+ else if (LineRasterizationMode != D3D12_LINE_RASTERIZATION_MODE_ALIASED)
+ {
+ o.MultisampleEnable = TRUE;
+ }
+ o.ForcedSampleCount = ForcedSampleCount;
+ o.ConservativeRaster = ConservativeRaster;
+
+ return o;
+ }
+ operator D3D12_RASTERIZER_DESC() const noexcept
+ {
+ return static_cast(CD3DX12_RASTERIZER_DESC1(static_cast(*this)));
+ }
+};
+#endif // D3D12_SDK_VERSION >= 610
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
+{
+ CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
+ explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
+ D3D12_RESOURCE_ALLOCATION_INFO( o )
+ {}
+ CD3DX12_RESOURCE_ALLOCATION_INFO(
+ UINT64 size,
+ UINT64 alignment ) noexcept
+ {
+ SizeInBytes = size;
+ Alignment = alignment;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
+{
+ CD3DX12_HEAP_PROPERTIES() = default;
+ explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
+ D3D12_HEAP_PROPERTIES(o)
+ {}
+ CD3DX12_HEAP_PROPERTIES(
+ D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
+ D3D12_MEMORY_POOL memoryPoolPreference,
+ UINT creationNodeMask = 1,
+ UINT nodeMask = 1 ) noexcept
+ {
+ Type = D3D12_HEAP_TYPE_CUSTOM;
+ CPUPageProperty = cpuPageProperty;
+ MemoryPoolPreference = memoryPoolPreference;
+ CreationNodeMask = creationNodeMask;
+ VisibleNodeMask = nodeMask;
+ }
+ explicit CD3DX12_HEAP_PROPERTIES(
+ D3D12_HEAP_TYPE type,
+ UINT creationNodeMask = 1,
+ UINT nodeMask = 1 ) noexcept
+ {
+ Type = type;
+ CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
+ MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
+ CreationNodeMask = creationNodeMask;
+ VisibleNodeMask = nodeMask;
+ }
+ bool IsCPUAccessible() const noexcept
+ {
+ return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ || Type == D3D12_HEAP_TYPE_GPU_UPLOAD
+#endif
+ || (Type == D3D12_HEAP_TYPE_CUSTOM &&
+ (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
+ }
+};
+inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
+{
+ return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
+ l.MemoryPoolPreference == r.MemoryPoolPreference &&
+ l.CreationNodeMask == r.CreationNodeMask &&
+ l.VisibleNodeMask == r.VisibleNodeMask;
+}
+inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
+{
+ CD3DX12_HEAP_DESC() = default;
+ explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
+ D3D12_HEAP_DESC(o)
+ {}
+ CD3DX12_HEAP_DESC(
+ UINT64 size,
+ D3D12_HEAP_PROPERTIES properties,
+ UINT64 alignment = 0,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = size;
+ Properties = properties;
+ Alignment = alignment;
+ Flags = flags;
+ }
+ CD3DX12_HEAP_DESC(
+ UINT64 size,
+ D3D12_HEAP_TYPE type,
+ UINT64 alignment = 0,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = size;
+ Properties = CD3DX12_HEAP_PROPERTIES( type );
+ Alignment = alignment;
+ Flags = flags;
+ }
+ CD3DX12_HEAP_DESC(
+ UINT64 size,
+ D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
+ D3D12_MEMORY_POOL memoryPoolPreference,
+ UINT64 alignment = 0,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = size;
+ Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
+ Alignment = alignment;
+ Flags = flags;
+ }
+ CD3DX12_HEAP_DESC(
+ const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
+ D3D12_HEAP_PROPERTIES properties,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = resAllocInfo.SizeInBytes;
+ Properties = properties;
+ Alignment = resAllocInfo.Alignment;
+ Flags = flags;
+ }
+ CD3DX12_HEAP_DESC(
+ const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
+ D3D12_HEAP_TYPE type,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = resAllocInfo.SizeInBytes;
+ Properties = CD3DX12_HEAP_PROPERTIES( type );
+ Alignment = resAllocInfo.Alignment;
+ Flags = flags;
+ }
+ CD3DX12_HEAP_DESC(
+ const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
+ D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
+ D3D12_MEMORY_POOL memoryPoolPreference,
+ D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
+ {
+ SizeInBytes = resAllocInfo.SizeInBytes;
+ Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
+ Alignment = resAllocInfo.Alignment;
+ Flags = flags;
+ }
+ bool IsCPUAccessible() const noexcept
+ { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
+};
+inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
+{
+ return l.SizeInBytes == r.SizeInBytes &&
+ l.Properties == r.Properties &&
+ l.Alignment == r.Alignment &&
+ l.Flags == r.Flags;
+}
+inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
+{
+ CD3DX12_CLEAR_VALUE() = default;
+ explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
+ D3D12_CLEAR_VALUE(o)
+ {}
+ CD3DX12_CLEAR_VALUE(
+ DXGI_FORMAT format,
+ const FLOAT color[4] ) noexcept
+ {
+ Format = format;
+ memcpy( Color, color, sizeof( Color ) );
+ }
+ CD3DX12_CLEAR_VALUE(
+ DXGI_FORMAT format,
+ FLOAT depth,
+ UINT8 stencil ) noexcept
+ {
+ Format = format;
+ memset( &Color, 0, sizeof( Color ) );
+ /* Use memcpy to preserve NAN values */
+ memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
+ DepthStencil.Stencil = stencil;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
+{
+ if (a.Format != b.Format) return false;
+ if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
+ || a.Format == DXGI_FORMAT_D16_UNORM
+ || a.Format == DXGI_FORMAT_D32_FLOAT
+ || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
+ {
+ return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
+ (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
+ } else {
+ return (a.Color[0] == b.Color[0]) &&
+ (a.Color[1] == b.Color[1]) &&
+ (a.Color[2] == b.Color[2]) &&
+ (a.Color[3] == b.Color[3]);
+ }
+}
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RANGE : public D3D12_RANGE
+{
+ CD3DX12_RANGE() = default;
+ explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
+ D3D12_RANGE(o)
+ {}
+ CD3DX12_RANGE(
+ SIZE_T begin,
+ SIZE_T end ) noexcept
+ {
+ Begin = begin;
+ End = end;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
+{
+ CD3DX12_RANGE_UINT64() = default;
+ explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
+ D3D12_RANGE_UINT64(o)
+ {}
+ CD3DX12_RANGE_UINT64(
+ UINT64 begin,
+ UINT64 end ) noexcept
+ {
+ Begin = begin;
+ End = end;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
+{
+ CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
+ explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
+ D3D12_SUBRESOURCE_RANGE_UINT64(o)
+ {}
+ CD3DX12_SUBRESOURCE_RANGE_UINT64(
+ UINT subresource,
+ const D3D12_RANGE_UINT64& range ) noexcept
+ {
+ Subresource = subresource;
+ Range = range;
+ }
+ CD3DX12_SUBRESOURCE_RANGE_UINT64(
+ UINT subresource,
+ UINT64 begin,
+ UINT64 end ) noexcept
+ {
+ Subresource = subresource;
+ Range.Begin = begin;
+ Range.End = end;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
+{
+ CD3DX12_SHADER_BYTECODE() = default;
+ explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
+ D3D12_SHADER_BYTECODE(o)
+ {}
+ CD3DX12_SHADER_BYTECODE(
+ _In_ ID3DBlob* pShaderBlob ) noexcept
+ {
+ pShaderBytecode = pShaderBlob->GetBufferPointer();
+ BytecodeLength = pShaderBlob->GetBufferSize();
+ }
+ CD3DX12_SHADER_BYTECODE(
+ const void* _pShaderBytecode,
+ SIZE_T bytecodeLength ) noexcept
+ {
+ pShaderBytecode = _pShaderBytecode;
+ BytecodeLength = bytecodeLength;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
+{
+ CD3DX12_TILED_RESOURCE_COORDINATE() = default;
+ explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
+ D3D12_TILED_RESOURCE_COORDINATE(o)
+ {}
+ CD3DX12_TILED_RESOURCE_COORDINATE(
+ UINT x,
+ UINT y,
+ UINT z,
+ UINT subresource ) noexcept
+ {
+ X = x;
+ Y = y;
+ Z = z;
+ Subresource = subresource;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
+{
+ CD3DX12_TILE_REGION_SIZE() = default;
+ explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
+ D3D12_TILE_REGION_SIZE(o)
+ {}
+ CD3DX12_TILE_REGION_SIZE(
+ UINT numTiles,
+ BOOL useBox,
+ UINT width,
+ UINT16 height,
+ UINT16 depth ) noexcept
+ {
+ NumTiles = numTiles;
+ UseBox = useBox;
+ Width = width;
+ Height = height;
+ Depth = depth;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
+{
+ CD3DX12_SUBRESOURCE_TILING() = default;
+ explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
+ D3D12_SUBRESOURCE_TILING(o)
+ {}
+ CD3DX12_SUBRESOURCE_TILING(
+ UINT widthInTiles,
+ UINT16 heightInTiles,
+ UINT16 depthInTiles,
+ UINT startTileIndexInOverallResource ) noexcept
+ {
+ WidthInTiles = widthInTiles;
+ HeightInTiles = heightInTiles;
+ DepthInTiles = depthInTiles;
+ StartTileIndexInOverallResource = startTileIndexInOverallResource;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
+{
+ CD3DX12_TILE_SHAPE() = default;
+ explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
+ D3D12_TILE_SHAPE(o)
+ {}
+ CD3DX12_TILE_SHAPE(
+ UINT widthInTexels,
+ UINT heightInTexels,
+ UINT depthInTexels ) noexcept
+ {
+ WidthInTexels = widthInTexels;
+ HeightInTexels = heightInTexels;
+ DepthInTexels = depthInTexels;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
+{
+ CD3DX12_PACKED_MIP_INFO() = default;
+ explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
+ D3D12_PACKED_MIP_INFO(o)
+ {}
+ CD3DX12_PACKED_MIP_INFO(
+ UINT8 numStandardMips,
+ UINT8 numPackedMips,
+ UINT numTilesForPackedMips,
+ UINT startTileIndexInOverallResource ) noexcept
+ {
+ NumStandardMips = numStandardMips;
+ NumPackedMips = numPackedMips;
+ NumTilesForPackedMips = numTilesForPackedMips;
+ StartTileIndexInOverallResource = startTileIndexInOverallResource;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
+{
+ CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
+ explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
+ D3D12_SUBRESOURCE_FOOTPRINT(o)
+ {}
+ CD3DX12_SUBRESOURCE_FOOTPRINT(
+ DXGI_FORMAT format,
+ UINT width,
+ UINT height,
+ UINT depth,
+ UINT rowPitch ) noexcept
+ {
+ Format = format;
+ Width = width;
+ Height = height;
+ Depth = depth;
+ RowPitch = rowPitch;
+ }
+ explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
+ const D3D12_RESOURCE_DESC& resDesc,
+ UINT rowPitch ) noexcept
+ {
+ Format = resDesc.Format;
+ Width = UINT( resDesc.Width );
+ Height = resDesc.Height;
+ Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1u);
+ RowPitch = rowPitch;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
+{
+ CD3DX12_TEXTURE_COPY_LOCATION() = default;
+ explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
+ D3D12_TEXTURE_COPY_LOCATION(o)
+ {}
+ CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
+ {
+ pResource = pRes;
+ Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
+ PlacedFootprint = {};
+ }
+ CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
+ {
+ pResource = pRes;
+ Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
+ PlacedFootprint = Footprint;
+ }
+ CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
+ {
+ pResource = pRes;
+ Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
+ PlacedFootprint = {};
+ SubresourceIndex = Sub;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
+{
+ return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
+}
+
+//------------------------------------------------------------------------------------------------
+inline UINT8 D3D12GetFormatPlaneCount(
+ _In_ ID3D12Device* pDevice,
+ DXGI_FORMAT Format
+ ) noexcept
+{
+ D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
+ if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
+ {
+ return 0;
+ }
+ return formatInfo.PlaneCount;
+}
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
+{
+ CD3DX12_RESOURCE_DESC() = default;
+ explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
+ D3D12_RESOURCE_DESC( o )
+ {}
+ CD3DX12_RESOURCE_DESC(
+ D3D12_RESOURCE_DIMENSION dimension,
+ UINT64 alignment,
+ UINT64 width,
+ UINT height,
+ UINT16 depthOrArraySize,
+ UINT16 mipLevels,
+ DXGI_FORMAT format,
+ UINT sampleCount,
+ UINT sampleQuality,
+ D3D12_TEXTURE_LAYOUT layout,
+ D3D12_RESOURCE_FLAGS flags ) noexcept
+ {
+ Dimension = dimension;
+ Alignment = alignment;
+ Width = width;
+ Height = height;
+ DepthOrArraySize = depthOrArraySize;
+ MipLevels = mipLevels;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Layout = layout;
+ Flags = flags;
+ }
+ static inline CD3DX12_RESOURCE_DESC Buffer(
+ const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
+ 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
+ }
+ static inline CD3DX12_RESOURCE_DESC Buffer(
+ UINT64 width,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
+ DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
+ }
+ static inline CD3DX12_RESOURCE_DESC Tex1D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT16 arraySize = 1,
+ UINT16 mipLevels = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
+ mipLevels, format, 1, 0, layout, flags );
+ }
+ static inline CD3DX12_RESOURCE_DESC Tex2D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT height,
+ UINT16 arraySize = 1,
+ UINT16 mipLevels = 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
+ mipLevels, format, sampleCount, sampleQuality, layout, flags );
+ }
+ static inline CD3DX12_RESOURCE_DESC Tex3D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT height,
+ UINT16 depth,
+ UINT16 mipLevels = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
+ mipLevels, format, 1, 0, layout, flags );
+ }
+ inline UINT16 Depth() const noexcept
+ { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
+ inline UINT16 ArraySize() const noexcept
+ { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
+ inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
+ { return D3D12GetFormatPlaneCount(pDevice, Format); }
+ inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
+ { return static_cast(MipLevels) * ArraySize() * PlaneCount(pDevice); }
+ inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
+ { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
+};
+inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
+{
+ return l.Dimension == r.Dimension &&
+ l.Alignment == r.Alignment &&
+ l.Width == r.Width &&
+ l.Height == r.Height &&
+ l.DepthOrArraySize == r.DepthOrArraySize &&
+ l.MipLevels == r.MipLevels &&
+ l.Format == r.Format &&
+ l.SampleDesc.Count == r.SampleDesc.Count &&
+ l.SampleDesc.Quality == r.SampleDesc.Quality &&
+ l.Layout == r.Layout &&
+ l.Flags == r.Flags;
+}
+inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
+{
+ CD3DX12_RESOURCE_DESC1() = default;
+ explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
+ D3D12_RESOURCE_DESC1( o )
+ {}
+ explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC& o ) noexcept
+ {
+ Dimension = o.Dimension;
+ Alignment = o.Alignment;
+ Width = o.Width;
+ Height = o.Height;
+ DepthOrArraySize = o.DepthOrArraySize;
+ MipLevels = o.MipLevels;
+ Format = o.Format;
+ SampleDesc = o.SampleDesc;
+ Layout = o.Layout;
+ Flags = o.Flags;
+ SamplerFeedbackMipRegion = {};
+ }
+ CD3DX12_RESOURCE_DESC1(
+ D3D12_RESOURCE_DIMENSION dimension,
+ UINT64 alignment,
+ UINT64 width,
+ UINT height,
+ UINT16 depthOrArraySize,
+ UINT16 mipLevels,
+ DXGI_FORMAT format,
+ UINT sampleCount,
+ UINT sampleQuality,
+ D3D12_TEXTURE_LAYOUT layout,
+ D3D12_RESOURCE_FLAGS flags,
+ UINT samplerFeedbackMipRegionWidth = 0,
+ UINT samplerFeedbackMipRegionHeight = 0,
+ UINT samplerFeedbackMipRegionDepth = 0) noexcept
+ {
+ Dimension = dimension;
+ Alignment = alignment;
+ Width = width;
+ Height = height;
+ DepthOrArraySize = depthOrArraySize;
+ MipLevels = mipLevels;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Layout = layout;
+ Flags = flags;
+ SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
+ SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
+ SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
+ }
+
+ static inline CD3DX12_RESOURCE_DESC1 Buffer(
+ const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
+ 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
+ }
+ static inline CD3DX12_RESOURCE_DESC1 Buffer(
+ UINT64 width,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
+ DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
+ }
+ static inline CD3DX12_RESOURCE_DESC1 Tex1D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT16 arraySize = 1,
+ UINT16 mipLevels = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
+ mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
+ }
+ static inline CD3DX12_RESOURCE_DESC1 Tex2D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT height,
+ UINT16 arraySize = 1,
+ UINT16 mipLevels = 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0,
+ UINT samplerFeedbackMipRegionWidth = 0,
+ UINT samplerFeedbackMipRegionHeight = 0,
+ UINT samplerFeedbackMipRegionDepth = 0) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
+ mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
+ samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
+ }
+ static inline CD3DX12_RESOURCE_DESC1 Tex3D(
+ DXGI_FORMAT format,
+ UINT64 width,
+ UINT height,
+ UINT16 depth,
+ UINT16 mipLevels = 0,
+ D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
+ D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ UINT64 alignment = 0 ) noexcept
+ {
+ return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
+ mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
+ }
+ inline UINT16 Depth() const noexcept
+ { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
+ inline UINT16 ArraySize() const noexcept
+ { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
+ inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
+ { return D3D12GetFormatPlaneCount(pDevice, Format); }
+ inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
+ { return static_cast(MipLevels) * ArraySize() * PlaneCount(pDevice); }
+ inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
+ { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
+};
+inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
+{
+ return l.Dimension == r.Dimension &&
+ l.Alignment == r.Alignment &&
+ l.Width == r.Width &&
+ l.Height == r.Height &&
+ l.DepthOrArraySize == r.DepthOrArraySize &&
+ l.MipLevels == r.MipLevels &&
+ l.Format == r.Format &&
+ l.SampleDesc.Count == r.SampleDesc.Count &&
+ l.SampleDesc.Quality == r.SampleDesc.Quality &&
+ l.Layout == r.Layout &&
+ l.Flags == r.Flags &&
+ l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
+ l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
+ l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
+}
+inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
+{ return !( l == r ); }
+
+//------------------------------------------------------------------------------------------------
+// Fills in the mipmap and alignment values of pDesc when either members are zero
+// Used to replace an implicit field to an explicit (0 mip map = max mip map level)
+// If expansion has occured, returns LclDesc, else returns the original pDesc
+inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
+ CD3DX12_RESOURCE_DESC1& LclDesc,
+ const CD3DX12_RESOURCE_DESC1* pDesc,
+ const bool tightAlignmentSupported = false,
+ const bool alignAsCommitted = false)
+{
+ // Expand mip levels:
+ if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
+ {
+ LclDesc = *pDesc;
+ if (pDesc->MipLevels == 0)
+ {
+ auto MaxMipLevels = [](UINT64 uiMaxDimension) -> UINT16
+ {
+ UINT16 uiRet = 0;
+ while (uiMaxDimension > 0)
+ {
+ uiRet++;
+ uiMaxDimension >>= 1;
+ }
+ return uiRet;
+ };
+ auto Max = [](UINT64 const& a, UINT64 const& b)
+ {
+ return (a < b) ? b : a;
+ };
+
+ LclDesc.MipLevels = MaxMipLevels(
+ Max(LclDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? LclDesc.DepthOrArraySize : 1,
+ Max(LclDesc.Width, LclDesc.Height)));
+ }
+ if (pDesc->Alignment == 0)
+ {
+ if (pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE
+ || pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE
+ )
+ {
+ LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
+ }
+ else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
+ || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
+ {
+ LclDesc.Alignment =
+ (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
+ }
+ else
+ {
+ // Tight alignment is supported and we aren't a cross adapter resource, now just need to set the alignment field to the minimum alignment for each type
+ if(alignAsCommitted)
+ LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
+ else
+ LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
+ }
+ }
+ return &LclDesc;
+ }
+ else
+ {
+ return pDesc;
+ }
+}
+
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
+{
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
+ explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
+ D3D12_SHADER_RESOURCE_VIEW_DESC(o)
+ {}
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
+ UINT NumElements,
+ UINT StructureByteStride,
+ UINT64 FirstElement = 0) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = StructureByteStride;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
+ UINT NumElements,
+ UINT64 FirstElement = 0) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_R32_UINT;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
+ DXGI_FORMAT Format,
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture1D.MostDetailedMip = MostDetailedMip;
+ desc.Texture1D.MipLevels = MipLevels;
+ desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT MipLevels = -1,
+ UINT FirstArraySlice = 0,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
+ desc.Texture1DArray.MipLevels = MipLevels;
+ desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture1DArray.ArraySize = ArraySize;
+ desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ UINT PlaneSlice = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2D.MostDetailedMip = MostDetailedMip;
+ desc.Texture2D.MipLevels = MipLevels;
+ desc.Texture2D.PlaneSlice = PlaneSlice;
+ desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT MipLevels = -1,
+ UINT FirstArraySlice = 0,
+ UINT MostDetailedMip = 0,
+ UINT PlaneSlice = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
+ desc.Texture2DArray.MipLevels = MipLevels;
+ desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DArray.ArraySize = ArraySize;
+ desc.Texture2DArray.PlaneSlice = PlaneSlice;
+ desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
+ DXGI_FORMAT Format,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize,
+ UINT FirstArraySlice = 0,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2DMSArray.ArraySize = ArraySize;
+ desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture3D.MostDetailedMip = MostDetailedMip;
+ desc.Texture3D.MipLevels = MipLevels;
+ desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.TextureCube.MostDetailedMip = MostDetailedMip;
+ desc.TextureCube.MipLevels = MipLevels;
+ desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
+ DXGI_FORMAT Format,
+ UINT NumCubes,
+ UINT MipLevels = -1,
+ UINT First2DArrayFace = 0,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.TextureCubeArray.NumCubes = NumCubes;
+ desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
+ desc.TextureCubeArray.MipLevels = MipLevels;
+ desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
+ desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
+ D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.RaytracingAccelerationStructure.Location = Location;
+ return desc;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
+{
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
+ explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
+ D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
+ {}
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
+ UINT NumElements,
+ UINT StructureByteStride,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = StructureByteStride;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_R32_UINT;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
+ DXGI_FORMAT Format,
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
+ DXGI_FORMAT Format,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
+ desc.Texture1D.MipSlice = MipSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
+ desc.Texture1DArray.MipSlice = MipSlice;
+ desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture1DArray.ArraySize = ArraySize;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
+ DXGI_FORMAT Format,
+ UINT MipSlice = 0,
+ UINT PlaneSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
+ desc.Texture2D.MipSlice = MipSlice;
+ desc.Texture2D.PlaneSlice = PlaneSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0,
+ UINT MipSlice = 0,
+ UINT PlaneSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
+ desc.Texture2DArray.MipSlice = MipSlice;
+ desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DArray.ArraySize = ArraySize;
+ desc.Texture2DArray.PlaneSlice = PlaneSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
+ DXGI_FORMAT Format) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
+ //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
+ desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DMSArray.ArraySize = ArraySize;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
+ DXGI_FORMAT Format,
+ UINT WSize = -1,
+ UINT FirstWSlice = 0,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
+ desc.Texture3D.MipSlice = MipSlice;
+ desc.Texture3D.FirstWSlice = FirstWSlice;
+ desc.Texture3D.WSize = WSize;
+ return desc;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
+{
+ CD3DX12_VIEW_INSTANCING_DESC() = default;
+ explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
+ D3D12_VIEW_INSTANCING_DESC( o )
+ {}
+ explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ ViewInstanceCount = 0;
+ pViewInstanceLocations = nullptr;
+ Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
+ }
+ explicit CD3DX12_VIEW_INSTANCING_DESC(
+ UINT InViewInstanceCount,
+ const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
+ D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
+ {
+ ViewInstanceCount = InViewInstanceCount;
+ pViewInstanceLocations = InViewInstanceLocations;
+ Flags = InFlags;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
+{
+ CD3DX12_RT_FORMAT_ARRAY() = default;
+ explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
+ : D3D12_RT_FORMAT_ARRAY(o)
+ {}
+ explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
+ {
+ NumRenderTargets = NumFormats;
+ memcpy(RTFormats, pFormats, sizeof(RTFormats));
+ // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
+{
+ CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
+ {
+ }
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ pSerializedBlob = nullptr;
+ SerializedBlobSizeInBytes = 0;
+ }
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
+ {
+ pSerializedBlob = pData;
+ SerializedBlobSizeInBytes = size;
+ }
+};
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_default.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_default.h
new file mode 100644
index 000000000..2b74d70f7
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_default.h
@@ -0,0 +1,12 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+struct CD3DX12_DEFAULT {};
+extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream.h
new file mode 100644
index 000000000..456583bb7
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream.h
@@ -0,0 +1,1718 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3dx12_default.h"
+#include "d3d12.h"
+#include "d3dx12_core.h"
+
+//------------------------------------------------------------------------------------------------
+// Pipeline State Stream Helpers
+//------------------------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------------------------
+// Stream Subobjects, i.e. elements of a stream
+
+struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
+struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4324)
+#endif
+template
+class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
+{
+private:
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
+ InnerStructType pssInner;
+public:
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type), pssInner(DefaultArg()) {}
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
+ operator InnerStructType const&() const noexcept { return pssInner; }
+ operator InnerStructType&() noexcept { return pssInner; }
+ InnerStructType* operator&() noexcept { return &pssInner; }
+ InnerStructType const* operator&() const noexcept { return &pssInner; }
+};
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
+#endif
+
+//------------------------------------------------------------------------------------------------
+// Stream Parser Helpers
+
+struct ID3DX12PipelineParserCallbacks
+{
+ // Subobject Callbacks
+ virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
+ virtual void NodeMaskCb(UINT) {}
+ virtual void RootSignatureCb(ID3D12RootSignature*) {}
+ virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
+ virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
+ virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
+ virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
+ virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
+ virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
+ virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
+ virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ virtual void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2&) {}
+#endif
+ virtual void DSVFormatCb(DXGI_FORMAT) {}
+ virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ virtual void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1&) {}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+ virtual void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2&) {}
+#endif
+ virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
+ virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
+ virtual void SampleMaskCb(UINT) {}
+ virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
+ virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
+#endif
+
+ // Error Callbacks
+ virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
+ virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
+ virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+ virtual void FinalizeCb() {}
+#endif
+
+ virtual ~ID3DX12PipelineParserCallbacks() = default;
+};
+
+struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
+{
+ ID3D12RootSignature* pRootSignature;
+ D3D12_SHADER_BYTECODE AS;
+ D3D12_SHADER_BYTECODE MS;
+ D3D12_SHADER_BYTECODE PS;
+ D3D12_BLEND_DESC BlendState;
+ UINT SampleMask;
+ D3D12_RASTERIZER_DESC RasterizerState;
+ D3D12_DEPTH_STENCIL_DESC DepthStencilState;
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
+ UINT NumRenderTargets;
+ DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
+ DXGI_FORMAT DSVFormat;
+ DXGI_SAMPLE_DESC SampleDesc;
+ UINT NodeMask;
+ D3D12_CACHED_PIPELINE_STATE CachedPSO;
+ D3D12_PIPELINE_STATE_FLAGS Flags;
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+struct CD3DX12_PIPELINE_STATE_STREAM6
+{
+ CD3DX12_PIPELINE_STATE_STREAM6() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ }
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ }
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
+
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
+// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
+// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
+struct CD3DX12_PIPELINE_STATE_STREAM5
+{
+ CD3DX12_PIPELINE_STATE_STREAM5() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM5(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 610
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
+// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
+// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
+struct CD3DX12_PIPELINE_STATE_STREAM4
+{
+ CD3DX12_PIPELINE_STATE_STREAM4() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM4(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1 RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = CD3DX12_RASTERIZER_DESC1(D3D12_RASTERIZER_DESC1(this->RasterizerState));
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 608
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
+// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
+// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
+// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
+struct CD3DX12_PIPELINE_STATE_STREAM3
+{
+ CD3DX12_PIPELINE_STATE_STREAM3() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM3(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+#endif // D3D12_SDK_VERSION >= 606
+
+// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
+// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
+// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
+struct CD3DX12_PIPELINE_STATE_STREAM2
+{
+ CD3DX12_PIPELINE_STATE_STREAM2() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+
+// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
+// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
+struct CD3DX12_PIPELINE_STATE_STREAM1
+{
+ CD3DX12_PIPELINE_STATE_STREAM1() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+
+
+struct CD3DX12_PIPELINE_MESH_STATE_STREAM
+{
+ CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
+ CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+ D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
+ {
+ D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.PS = this->PS;
+ D.AS = this->AS;
+ D.MS = this->MS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+
+// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
+// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
+struct CD3DX12_PIPELINE_STATE_STREAM
+{
+ CD3DX12_PIPELINE_STATE_STREAM() = default;
+ CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ {}
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+
+
+struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
+ : SeenDSS(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
+ void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override
+ {
+ PipelineStream.DSVFormat = DSVFormat;
+ if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
+ void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
+
+private:
+ bool SeenDSS;
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+struct CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM3 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER() noexcept
+ : SeenDSS(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override
+ {
+ PipelineStream.DSVFormat = DSVFormat;
+ if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+
+private:
+ bool SeenDSS;
+};
+#endif // D3D12_SDK_VERSION >= 606
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+struct CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM4 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER() noexcept
+ : SeenDSS(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override
+ {
+ PipelineStream.DSVFormat = DSVFormat;
+ if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+
+private:
+ bool SeenDSS;
+};
+#endif // D3D12_SDK_VERSION >= 608
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
+struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
+ : SeenDSS(false),
+ SeenMS(false),
+ SeenTopology(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
+ {
+ PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
+ SeenTopology = true;
+ }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+ void FinalizeCb() override
+ {
+ if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ if (!SeenTopology && SeenMS)
+ {
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
+ }
+ }
+
+private:
+ bool SeenDSS;
+ bool SeenMS;
+ bool SeenTopology;
+};
+#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
+ : SeenDSS(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override
+ {
+ PipelineStream.DSVFormat = DSVFormat;
+ if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+
+private:
+ bool SeenDSS;
+};
+#endif // D3D12_SDK_VERSION >= 610
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
+ : SeenDSS(false),
+ SeenMS(false),
+ SeenTopology(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
+ {
+ PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
+ SeenTopology = true;
+ }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+ void FinalizeCb() override
+ {
+ if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ if (!SeenTopology && SeenMS)
+ {
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
+ }
+ }
+ void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
+
+private:
+ bool SeenDSS;
+ bool SeenMS;
+ bool SeenTopology;
+};
+#endif // D3D12_SDK_VERSION >= 618
+
+struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
+ : SeenDSS(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
+ void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override
+ {
+ PipelineStream.DSVFormat = DSVFormat;
+ if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
+ void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
+
+private:
+ bool SeenDSS;
+};
+
+
+inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
+{
+ switch (SubobjectType)
+ {
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
+ return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
+ return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
+ return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
+#endif
+ default:
+ return SubobjectType;
+ }
+}
+
+inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
+{
+ if (pCallbacks == nullptr)
+ {
+ return E_INVALIDARG;
+ }
+
+ if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
+ {
+ pCallbacks->ErrorBadInputParameter(1); // first parameter issue
+ return E_INVALIDARG;
+ }
+
+ bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
+ for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
+ {
+ BYTE* pStream = static_cast(Desc.pPipelineStateSubobjectStream)+CurOffset;
+ auto SubobjectType = *reinterpret_cast(pStream);
+ if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
+ {
+ pCallbacks->ErrorUnknownSubobject(SubobjectType);
+ return E_INVALIDARG;
+ }
+ if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
+ {
+ pCallbacks->ErrorDuplicateSubobject(SubobjectType);
+ return E_INVALIDARG; // disallow subobject duplicates in a stream
+ }
+ SubobjectSeen[SubobjectType] = true;
+ switch (SubobjectType)
+ {
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
+ pCallbacks->RootSignatureCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
+ pCallbacks->VSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
+ pCallbacks->PSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
+ pCallbacks->DSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
+ pCallbacks->HSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
+ pCallbacks->GSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
+ pCallbacks->CSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
+ pCallbacks->ASCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
+ pCallbacks->MSCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
+ pCallbacks->StreamOutputCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
+ pCallbacks->BlendStateCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
+ pCallbacks->SampleMaskCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
+ pCallbacks->RasterizerStateCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
+ break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
+ pCallbacks->RasterizerState1Cb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState);
+ break;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2:
+ pCallbacks->RasterizerState2Cb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState);
+ break;
+#endif
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
+ pCallbacks->DepthStencilStateCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
+ pCallbacks->DepthStencilState1Cb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
+ break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
+ pCallbacks->DepthStencilState2Cb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState);
+ break;
+#endif
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
+ pCallbacks->InputLayoutCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
+ pCallbacks->IBStripCutValueCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
+ pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
+ pCallbacks->RTVFormatsCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
+ pCallbacks->DSVFormatCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
+ pCallbacks->SampleDescCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
+ pCallbacks->NodeMaskCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
+ pCallbacks->CachedPSOCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
+ pCallbacks->FlagsCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
+ break;
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
+ pCallbacks->ViewInstancingCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
+ break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
+ pCallbacks->SerializedRootSignatureCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
+ break;
+#endif
+ default:
+ pCallbacks->ErrorUnknownSubobject(SubobjectType);
+ return E_INVALIDARG;
+ }
+ }
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+ pCallbacks->FinalizeCb();
+#endif
+
+ return S_OK;
+}
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream_custom.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream_custom.h
new file mode 100644
index 000000000..46b66ba70
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_pipeline_state_stream_custom.h
@@ -0,0 +1,75 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#include "d3dx12_default.h"
+#include "d3d12.h"
+
+//------------------------------------------------------------------------------------------------
+// Pipeline State Stream Helpers
+//------------------------------------------------------------------------------------------------
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4324)
+#endif
+template
+class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
+{
+private:
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
+ InnerStructType pssInner;
+public:
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type) {}
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
+ CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
+ operator InnerStructType const&() const noexcept { return pssInner; }
+ operator InnerStructType&() noexcept { return pssInner; }
+ InnerStructType* operator&() noexcept { return &pssInner; }
+ InnerStructType const* operator&() const noexcept { return &pssInner; }
+};
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
+#endif
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
+#endif
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_property_format_table.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_property_format_table.h
new file mode 100644
index 000000000..66c7600f5
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_property_format_table.h
@@ -0,0 +1,128 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
+#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
+#include "d3d12.h"
+#define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses
+
+struct D3D12_PROPERTY_LAYOUT_FORMAT_TABLE
+{
+public:
+ // ----------------------------------------------------------------------------
+ // Information describing everything about a D3D Resource Format
+ // ----------------------------------------------------------------------------
+ typedef struct FORMAT_DETAIL
+ {
+ DXGI_FORMAT DXGIFormat;
+ DXGI_FORMAT ParentFormat;
+ const DXGI_FORMAT* pDefaultFormatCastSet; // This is dependent on FL/driver version, but is here to save a lot of space
+ UINT8 BitsPerComponent[4]; // only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
+ UINT8 BitsPerUnit;
+ BYTE SRGBFormat : 1;
+ UINT WidthAlignment : 4; // number of texels to align to in a mip level.
+ UINT HeightAlignment : 4; // Top level dimensions must be a multiple of these
+ UINT DepthAlignment : 1; // values.
+ D3D_FORMAT_LAYOUT Layout : 1;
+ D3D_FORMAT_TYPE_LEVEL TypeLevel : 2;
+ D3D_FORMAT_COMPONENT_NAME ComponentName0 : 3; // RED ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
+ D3D_FORMAT_COMPONENT_NAME ComponentName1 : 3; // GREEN ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
+ D3D_FORMAT_COMPONENT_NAME ComponentName2 : 3; // BLUE ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
+ D3D_FORMAT_COMPONENT_NAME ComponentName3 : 3; // ALPHA ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
+ D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation0 : 3; // only used for D3DFTL_FULL_TYPE
+ D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation1 : 3; // only used for D3DFTL_FULL_TYPE
+ D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation2 : 3; // only used for D3DFTL_FULL_TYPE
+ D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation3 : 3; // only used for D3DFTL_FULL_TYPE
+ bool bDX9VertexOrIndexFormat : 1;
+ bool bDX9TextureFormat : 1;
+ bool bFloatNormFormat : 1;
+ bool bPlanar : 1;
+ bool bYUV : 1;
+ bool bDependantFormatCastSet : 1; // This indicates that the format cast set is dependent on FL/driver version
+ bool bInternal : 1;
+ } FORMAT_DETAIL;
+
+private:
+ static const FORMAT_DETAIL s_FormatDetail[];
+ static const UINT s_NumFormats;
+ static const LPCSTR s_FormatNames[]; // separate from above structure so it can be compiled out of runtime.
+public:
+ static UINT GetNumFormats();
+ static const FORMAT_DETAIL* GetFormatTable();
+ static D3D_FEATURE_LEVEL GetHighestDefinedFeatureLevel();
+
+ static DXGI_FORMAT GetFormat (SIZE_T Index);
+ static bool FormatExists (DXGI_FORMAT Format);
+ static bool FormatExistsInHeader (DXGI_FORMAT Format, bool bExternalHeader = true);
+ static UINT GetByteAlignment (DXGI_FORMAT Format);
+ static bool IsBlockCompressFormat (DXGI_FORMAT Format);
+ static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
+ static bool IsSRGBFormat (DXGI_FORMAT Format);
+ static UINT GetBitsPerStencil (DXGI_FORMAT Format);
+ static UINT GetBitsPerDepth (DXGI_FORMAT Format);
+ static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
+ static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
+ static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
+
+ // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
+ // the absolute component index (range 0 to 3).
+ static UINT Sequential2AbsoluteComponentIndex (DXGI_FORMAT Format, UINT SequentialComponentIndex);
+ static bool CanBeCastEvenFullyTyped (DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl);
+ static UINT8 GetAddressingBitsPerAlignedSize (DXGI_FORMAT Format);
+ static DXGI_FORMAT GetParentFormat (DXGI_FORMAT Format);
+ static const DXGI_FORMAT* GetFormatCastSet (DXGI_FORMAT Format);
+ static D3D_FORMAT_LAYOUT GetLayout (DXGI_FORMAT Format);
+ static D3D_FORMAT_TYPE_LEVEL GetTypeLevel (DXGI_FORMAT Format);
+ static UINT GetBitsPerUnit (DXGI_FORMAT Format);
+ static UINT GetBitsPerUnitThrow (DXGI_FORMAT Format);
+ static UINT GetBitsPerElement (DXGI_FORMAT Format); // Legacy function used to support D3D10on9 only. Do not use.
+ static UINT GetWidthAlignment (DXGI_FORMAT Format);
+ static UINT GetHeightAlignment (DXGI_FORMAT Format);
+ static UINT GetDepthAlignment (DXGI_FORMAT Format);
+ static BOOL Planar (DXGI_FORMAT Format);
+ static BOOL NonOpaquePlanar (DXGI_FORMAT Format);
+ static BOOL YUV (DXGI_FORMAT Format);
+ static BOOL Opaque (DXGI_FORMAT Format);
+ static bool FamilySupportsStencil (DXGI_FORMAT Format);
+ static UINT NonOpaquePlaneCount (DXGI_FORMAT Format);
+ static BOOL DX9VertexOrIndexFormat (DXGI_FORMAT Format);
+ static BOOL DX9TextureFormat (DXGI_FORMAT Format);
+ static BOOL FloatNormTextureFormat (DXGI_FORMAT Format);
+ static bool DepthOnlyFormat (DXGI_FORMAT format);
+ static UINT8 GetPlaneCount (DXGI_FORMAT Format);
+ static bool MotionEstimatorAllowedInputFormat (DXGI_FORMAT Format);
+ static bool SupportsSamplerFeedback (DXGI_FORMAT Format);
+ static bool DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format);
+ static UINT8 GetPlaneSliceFromViewFormat (DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat);
+ static bool FloatAndNotFloatFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
+ static bool SNORMAndUNORMFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
+ static bool ValidCastToR32UAV (DXGI_FORMAT from, DXGI_FORMAT to);
+ static bool IsSupportedTextureDisplayableFormat (DXGI_FORMAT, bool bMediaFormatOnly);
+ static D3D_FORMAT_COMPONENT_INTERPRETATION GetFormatComponentInterpretation (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
+ static UINT GetBitsPerComponent (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
+ static D3D_FORMAT_COMPONENT_NAME GetComponentName (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
+ static HRESULT CalculateExtraPlanarRows (DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight);
+ static HRESULT CalculateMinimumRowMajorRowPitch (DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch);
+ static HRESULT CalculateMinimumRowMajorSlicePitch (DXGI_FORMAT Format, UINT ContextBasedRowPitch, UINT Height, _Out_ UINT& SlicePitch);
+ static void GetYCbCrChromaSubsampling (DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, _Out_ UINT& VerticalSubsampling);
+
+ static HRESULT CalculateResourceSize (UINT width, UINT height, UINT depth, DXGI_FORMAT format, UINT mipLevels, UINT subresources, _Out_ SIZE_T& totalByteSize, _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST* pDst = nullptr);
+ static void GetTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
+ static void Get4KTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
+ static void GetMipDimensions (UINT8 mipSlice, _Inout_ UINT64* pWidth, _Inout_opt_ UINT64* pHeight = nullptr, _Inout_opt_ UINT64* pDepth = nullptr);
+ static void GetPlaneSubsampledSizeAndFormatForCopyableLayout(UINT PlaneSlice, DXGI_FORMAT Format, UINT Width, UINT Height, _Out_ DXGI_FORMAT& PlaneFormat, _Out_ UINT& MinPlanePitchWidth, _Out_ UINT& PlaneWidth, _Out_ UINT& PlaneHeight);
+
+ static UINT GetDetailTableIndex (DXGI_FORMAT Format);
+ static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
+ static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
+ static bool SupportsDepth (DXGI_FORMAT Format);
+ static bool SupportsStencil (DXGI_FORMAT Format);
+private:
+ static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
+
+};
+
+#endif
\ No newline at end of file
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_render_pass.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_render_pass.h
new file mode 100644
index 000000000..c88fbdf1b
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_render_pass.h
@@ -0,0 +1,105 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3d12.h"
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
+{
+ return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
+}
+
+inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
+{
+ return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
+}
+
+inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
+{
+ return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
+}
+#endif
+
+inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
+{
+ return a.ClearValue == b.ClearValue;
+}
+
+inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
+{
+ if (a.pSrcResource != b.pSrcResource) return false;
+ if (a.pDstResource != b.pDstResource) return false;
+ if (a.SubresourceCount != b.SubresourceCount) return false;
+ if (a.Format != b.Format) return false;
+ if (a.ResolveMode != b.ResolveMode) return false;
+ if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
+ return true;
+}
+
+inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
+{
+ if (a.Type != b.Type) return false;
+ switch (a.Type)
+ {
+ case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR:
+ if (!(a.Clear == b.Clear)) return false;
+ break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
+ case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
+ case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
+ if (!(a.PreserveLocal == b.PreserveLocal)) return false;
+ break;
+#endif
+ default:
+ break;
+ }
+ return true;
+}
+
+inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_RENDER_PASS_ENDING_ACCESS& b) noexcept
+{
+ if (a.Type != b.Type) return false;
+ switch (a.Type)
+ {
+ case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE:
+ if (!(a.Resolve == b.Resolve)) return false;
+ break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
+ case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
+ case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
+ if (!(a.PreserveLocal == b.PreserveLocal)) return false;
+ break;
+#endif
+ default:
+ break;
+ }
+ return true;
+}
+
+inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
+{
+ if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
+ if (!(a.BeginningAccess == b.BeginningAccess)) return false;
+ if (!(a.EndingAccess == b.EndingAccess)) return false;
+ return true;
+}
+inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
+{
+ if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
+ if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
+ if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
+ if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
+ if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
+ return true;
+}
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_resource_helpers.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_resource_helpers.h
new file mode 100644
index 000000000..5c1c980d6
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_resource_helpers.h
@@ -0,0 +1,612 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3dx12_property_format_table.h"
+#include "d3d12.h"
+#include "d3dx12_core.h"
+//------------------------------------------------------------------------------------------------
+template
+inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
+{
+ MipSlice = static_cast(Subresource % MipLevels);
+ ArraySlice = static_cast((Subresource / MipLevels) % ArraySize);
+ PlaneSlice = static_cast(Subresource / (MipLevels * ArraySize));
+}
+
+//------------------------------------------------------------------------------------------------
+// Row-by-row memcpy
+inline void MemcpySubresource(
+ _In_ const D3D12_MEMCPY_DEST* pDest,
+ _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
+ SIZE_T RowSizeInBytes,
+ UINT NumRows,
+ UINT NumSlices) noexcept
+{
+ for (UINT z = 0; z < NumSlices; ++z)
+ {
+ auto pDestSlice = static_cast(pDest->pData) + pDest->SlicePitch * z;
+ auto pSrcSlice = static_cast(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
+ for (UINT y = 0; y < NumRows; ++y)
+ {
+ memcpy(pDestSlice + pDest->RowPitch * y,
+ pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
+ RowSizeInBytes);
+ }
+ }
+}
+
+//------------------------------------------------------------------------------------------------
+// Row-by-row memcpy
+inline void MemcpySubresource(
+ _In_ const D3D12_MEMCPY_DEST* pDest,
+ _In_ const void* pResourceData,
+ _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
+ SIZE_T RowSizeInBytes,
+ UINT NumRows,
+ UINT NumSlices) noexcept
+{
+ for (UINT z = 0; z < NumSlices; ++z)
+ {
+ auto pDestSlice = static_cast(pDest->pData) + pDest->SlicePitch * z;
+ auto pSrcSlice = (static_cast(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
+ for (UINT y = 0; y < NumRows; ++y)
+ {
+ memcpy(pDestSlice + pDest->RowPitch * y,
+ pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
+ RowSizeInBytes);
+ }
+ }
+}
+
+//------------------------------------------------------------------------------------------------
+// Returns required size of a buffer to be used for data upload
+inline UINT64 GetRequiredIntermediateSize(
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
+{
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
+#endif
+ UINT64 RequiredSize = 0;
+
+ ID3D12Device* pDevice = nullptr;
+ pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice));
+ pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
+ pDevice->Release();
+
+ return RequiredSize;
+}
+
+//------------------------------------------------------------------------------------------------
+// All arrays must be populated (e.g. by calling GetCopyableFootprints)
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 RequiredSize,
+ _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+ _In_reads_(NumSubresources) const UINT* pNumRows,
+ _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
+{
+ // Minor validation
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto IntermediateDesc = pIntermediate->GetDesc();
+ const auto DestinationDesc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
+ const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
+ const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
+#endif
+ if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
+ IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
+ RequiredSize > SIZE_T(-1) ||
+ (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
+ (FirstSubresource != 0 || NumSubresources != 1)))
+ {
+ return 0;
+ }
+
+ BYTE* pData;
+ HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast(&pData));
+ if (FAILED(hr))
+ {
+ return 0;
+ }
+
+ for (UINT i = 0; i < NumSubresources; ++i)
+ {
+ if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
+ D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
+ MemcpySubresource(&DestData, &pSrcData[i], static_cast(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
+ }
+ pIntermediate->Unmap(0, nullptr);
+
+ if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
+ {
+ pCmdList->CopyBufferRegion(
+ pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
+ }
+ else
+ {
+ for (UINT i = 0; i < NumSubresources; ++i)
+ {
+ const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
+ const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
+ pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
+ }
+ }
+ return RequiredSize;
+}
+
+//------------------------------------------------------------------------------------------------
+// All arrays must be populated (e.g. by calling GetCopyableFootprints)
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 RequiredSize,
+ _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+ _In_reads_(NumSubresources) const UINT* pNumRows,
+ _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
+ _In_ const void* pResourceData,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
+{
+ // Minor validation
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto IntermediateDesc = pIntermediate->GetDesc();
+ const auto DestinationDesc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
+ const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
+ const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
+#endif
+ if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
+ IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
+ RequiredSize > SIZE_T(-1) ||
+ (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
+ (FirstSubresource != 0 || NumSubresources != 1)))
+ {
+ return 0;
+ }
+
+ BYTE* pData;
+ HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast(&pData));
+ if (FAILED(hr))
+ {
+ return 0;
+ }
+
+ for (UINT i = 0; i < NumSubresources; ++i)
+ {
+ if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
+ D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
+ MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
+ }
+ pIntermediate->Unmap(0, nullptr);
+
+ if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
+ {
+ pCmdList->CopyBufferRegion(
+ pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
+ }
+ else
+ {
+ for (UINT i = 0; i < NumSubresources; ++i)
+ {
+ const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
+ const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
+ pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
+ }
+ }
+ return RequiredSize;
+}
+
+//------------------------------------------------------------------------------------------------
+// Heap-allocating UpdateSubresources implementation
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ UINT64 IntermediateOffset,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
+{
+ UINT64 RequiredSize = 0;
+ const auto MemToAlloc = static_cast(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
+ if (MemToAlloc > SIZE_MAX)
+ {
+ return 0;
+ }
+ void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast(MemToAlloc));
+ if (pMem == nullptr)
+ {
+ return 0;
+ }
+ auto pLayouts = static_cast(pMem);
+ auto pRowSizesInBytes = reinterpret_cast(pLayouts + NumSubresources);
+ auto pNumRows = reinterpret_cast(pRowSizesInBytes + NumSubresources);
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
+#endif
+ ID3D12Device* pDevice = nullptr;
+ pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice));
+ pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
+ pDevice->Release();
+
+ const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
+ HeapFree(GetProcessHeap(), 0, pMem);
+ return Result;
+}
+
+//------------------------------------------------------------------------------------------------
+// Heap-allocating UpdateSubresources implementation
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ UINT64 IntermediateOffset,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ _In_ const void* pResourceData,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
+{
+ UINT64 RequiredSize = 0;
+ const auto MemToAlloc = static_cast(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
+ if (MemToAlloc > SIZE_MAX)
+ {
+ return 0;
+ }
+ void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast(MemToAlloc));
+ if (pMem == nullptr)
+ {
+ return 0;
+ }
+ auto pLayouts = static_cast(pMem);
+ auto pRowSizesInBytes = reinterpret_cast(pLayouts + NumSubresources);
+ auto pNumRows = reinterpret_cast(pRowSizesInBytes + NumSubresources);
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
+#endif
+ ID3D12Device* pDevice = nullptr;
+ pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice));
+ pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
+ pDevice->Release();
+
+ const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
+ HeapFree(GetProcessHeap(), 0, pMem);
+ return Result;
+}
+
+//------------------------------------------------------------------------------------------------
+// Stack-allocating UpdateSubresources implementation
+template
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ UINT64 IntermediateOffset,
+ _In_range_(0,MaxSubresources) UINT FirstSubresource,
+ _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
+{
+ UINT64 RequiredSize = 0;
+ D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
+ UINT NumRows[MaxSubresources];
+ UINT64 RowSizesInBytes[MaxSubresources];
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
+#endif
+ ID3D12Device* pDevice = nullptr;
+ pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice));
+ pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
+ pDevice->Release();
+
+ return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
+}
+
+//------------------------------------------------------------------------------------------------
+// Stack-allocating UpdateSubresources implementation
+template
+inline UINT64 UpdateSubresources(
+ _In_ ID3D12GraphicsCommandList* pCmdList,
+ _In_ ID3D12Resource* pDestinationResource,
+ _In_ ID3D12Resource* pIntermediate,
+ UINT64 IntermediateOffset,
+ _In_range_(0,MaxSubresources) UINT FirstSubresource,
+ _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
+ _In_ const void* pResourceData,
+ _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
+{
+ UINT64 RequiredSize = 0;
+ D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
+ UINT NumRows[MaxSubresources];
+ UINT64 RowSizesInBytes[MaxSubresources];
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ const auto Desc = pDestinationResource->GetDesc();
+#else
+ D3D12_RESOURCE_DESC tmpDesc;
+ const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
+#endif
+ ID3D12Device* pDevice = nullptr;
+ pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast(&pDevice));
+ pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
+ pDevice->Release();
+
+ return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
+}
+
+//------------------------------------------------------------------------------------------------
+constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
+{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
+
+//------------------------------------------------------------------------------------------------
+template< typename T >
+inline T D3DX12Align(T uValue, T uAlign)
+{
+ // Assert power of 2 alignment
+ D3DX12_ASSERT(0 == (uAlign & (uAlign - 1)));
+ T uMask = uAlign - 1;
+ T uResult = (uValue + uMask) & ~uMask;
+ D3DX12_ASSERT(uResult >= uValue);
+ D3DX12_ASSERT(0 == (uResult % uAlign));
+ return uResult;
+}
+
+//------------------------------------------------------------------------------------------------
+template< typename T >
+inline T D3DX12AlignAtLeast(T uValue, T uAlign)
+{
+ T aligned = D3DX12Align(uValue, uAlign);
+ return aligned > uAlign ? aligned : uAlign;
+}
+
+inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
+ D3D12_RESOURCE_DESC1& LclDesc,
+ const D3D12_RESOURCE_DESC1* pDesc,
+ const bool tightAlignmentSupported = false,
+ const bool alignAsCommitted = false)
+{
+ return D3DX12ConditionallyExpandAPIDesc(static_cast(LclDesc), static_cast(pDesc), tightAlignmentSupported, alignAsCommitted);
+}
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
+//------------------------------------------------------------------------------------------------
+// The difference between D3DX12GetCopyableFootprints and ID3D12Device::GetCopyableFootprints
+// is that this one loses a lot of error checking by assuming the arguments are correct
+inline bool D3DX12GetCopyableFootprints(
+ _In_ const D3D12_RESOURCE_DESC1& ResourceDesc,
+ _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT* pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
+ _Out_opt_ UINT64* pTotalBytes)
+{
+ constexpr UINT64 uint64_max = ~0ull;
+ UINT64 TotalBytes = uint64_max;
+ UINT uSubRes = 0;
+
+ bool bResourceOverflow = false;
+ TotalBytes = 0;
+
+ const DXGI_FORMAT Format = ResourceDesc.Format;
+
+ CD3DX12_RESOURCE_DESC1 LresourceDesc;
+ const CD3DX12_RESOURCE_DESC1& resourceDesc = *D3DX12ConditionallyExpandAPIDesc(LresourceDesc, &ResourceDesc);
+
+ // Check if its a valid format
+ D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
+
+ // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
+ if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
+ {
+ return false;
+ }
+
+ const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
+ const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
+ const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
+
+ for (; uSubRes < NumSubresources; ++uSubRes)
+ {
+ bool bOverflow = false;
+ UINT Subresource = FirstSubresource + uSubRes;
+
+ D3DX12_ASSERT(resourceDesc.MipLevels != 0);
+ UINT subresourceCount = resourceDesc.MipLevels * resourceDesc.ArraySize() * D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(resourceDesc.Format);
+
+ if (Subresource > subresourceCount)
+ {
+ break;
+ }
+
+ TotalBytes = D3DX12Align< UINT64 >( TotalBytes, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT );
+
+ UINT MipLevel, ArraySlice, PlaneSlice;
+ D3D12DecomposeSubresource(Subresource, resourceDesc.MipLevels, resourceDesc.ArraySize(), /*_Out_*/MipLevel, /*_Out_*/ArraySlice, /*_Out_*/PlaneSlice);
+
+ const UINT64 Width = D3DX12AlignAtLeast(resourceDesc.Width >> MipLevel, WidthAlignment);
+ const UINT Height = D3DX12AlignAtLeast(resourceDesc.Height >> MipLevel, HeightAlignment);
+ const UINT16 Depth = D3DX12AlignAtLeast(resourceDesc.Depth() >> MipLevel, DepthAlignment);
+
+ // Adjust for the current PlaneSlice. Most formats have only one plane.
+ DXGI_FORMAT PlaneFormat;
+ UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
+ D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
+
+ D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
+ auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
+ Placement.Format = PlaneFormat;
+ Placement.Width = PlaneWidth;
+ Placement.Height = PlaneHeight;
+ Placement.Depth = Depth;
+
+ // Calculate row pitch
+ UINT MinPlaneRowPitch = 0;
+ D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, MinPlanePitchWidth, MinPlaneRowPitch);
+
+ // Formats with more than one plane choose a larger pitch alignment to ensure that each plane begins on the row
+ // immediately following the previous plane while still adhering to subresource alignment restrictions.
+ static_assert( D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT >= D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
+ && ((D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT % D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) == 0),
+ "D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT must be >= and evenly divisible by D3D12_TEXTURE_DATA_PITCH_ALIGNMENT." );
+
+ Placement.RowPitch = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format)
+ ? D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT )
+ : D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT );
+
+ if (pRowSizeInBytes)
+ {
+ UINT PlaneRowSize = 0;
+ D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, PlaneWidth, PlaneRowSize);
+
+ pRowSizeInBytes[uSubRes] = PlaneRowSize;
+ }
+
+ // Number of rows (accounting for block compression and additional planes)
+ UINT NumRows = 0;
+ if (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format))
+ {
+ NumRows = PlaneHeight;
+ }
+ else
+ {
+ D3DX12_ASSERT(Height % HeightAlignment == 0);
+ NumRows = Height / HeightAlignment;
+ }
+
+ if (pNumRows)
+ {
+ pNumRows[uSubRes] = NumRows;
+ }
+
+ // Offsetting
+ if (pLayouts)
+ {
+ pLayouts[uSubRes].Offset = (bOverflow ? uint64_max : TotalBytes + BaseOffset);
+ }
+
+ const UINT16 NumSlices = Depth;
+ const UINT64 SubresourceSize = (NumRows * NumSlices - 1) * Placement.RowPitch + MinPlaneRowPitch;
+
+ // uint64 addition with overflow checking
+ TotalBytes = TotalBytes + SubresourceSize;
+ if(TotalBytes < SubresourceSize)
+ {
+ TotalBytes = uint64_max;
+ }
+ bResourceOverflow = bResourceOverflow || bOverflow;
+ }
+
+ // Overflow error
+ if (bResourceOverflow)
+ {
+ TotalBytes = uint64_max;
+ }
+
+
+ if (pLayouts)
+ {
+ memset( pLayouts + uSubRes, -1, sizeof( *pLayouts ) * (NumSubresources - uSubRes) );
+ }
+ if (pNumRows)
+ {
+ memset(pNumRows + uSubRes, -1, sizeof(*pNumRows) * (NumSubresources - uSubRes));
+ }
+ if (pRowSizeInBytes)
+ {
+ memset(pRowSizeInBytes + uSubRes, -1, sizeof(*pRowSizeInBytes) * (NumSubresources - uSubRes));
+ }
+ if (pTotalBytes)
+ {
+ *pTotalBytes = TotalBytes;
+ }
+ if(TotalBytes == uint64_max)
+ {
+ return false;
+ }
+ return true;
+}
+
+//------------------------------------------------------------------------------------------------
+inline D3D12_RESOURCE_DESC1 D3DX12ResourceDesc0ToDesc1(D3D12_RESOURCE_DESC const& desc0)
+{
+ D3D12_RESOURCE_DESC1 desc1;
+ desc1.Dimension = desc0.Dimension;
+ desc1.Alignment = desc0.Alignment;
+ desc1.Width = desc0.Width;
+ desc1.Height = desc0.Height;
+ desc1.DepthOrArraySize = desc0.DepthOrArraySize;
+ desc1.MipLevels = desc0.MipLevels;
+ desc1.Format = desc0.Format;
+ desc1.SampleDesc.Count = desc0.SampleDesc.Count;
+ desc1.SampleDesc.Quality = desc0.SampleDesc.Quality;
+ desc1.Layout = desc0.Layout;
+ desc1.Flags = desc0.Flags;
+ desc1.SamplerFeedbackMipRegion.Width = 0;
+ desc1.SamplerFeedbackMipRegion.Height = 0;
+ desc1.SamplerFeedbackMipRegion.Depth = 0;
+ return desc1;
+}
+
+//------------------------------------------------------------------------------------------------
+inline bool D3DX12GetCopyableFootprints(
+ _In_ const D3D12_RESOURCE_DESC& pResourceDesc,
+ _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT* pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
+ _Out_opt_ UINT64* pTotalBytes)
+{
+ // From D3D12_RESOURCE_DESC to D3D12_RESOURCE_DESC1
+ D3D12_RESOURCE_DESC1 desc = D3DX12ResourceDesc0ToDesc1(pResourceDesc);
+ return D3DX12GetCopyableFootprints(
+ *static_cast(&desc),// From D3D12_RESOURCE_DESC1 to CD3DX12_RESOURCE_DESC1
+ FirstSubresource,
+ NumSubresources,
+ BaseOffset,
+ pLayouts,
+ pNumRows,
+ pRowSizeInBytes,
+ pTotalBytes);
+}
+
+#endif // D3D12_SDK_VERSION >= 606
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_root_signature.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_root_signature.h
new file mode 100644
index 000000000..e194d30a3
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_root_signature.h
@@ -0,0 +1,1227 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3d12.h"
+#include "d3dx12_default.h"
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
+{
+ CD3DX12_DESCRIPTOR_RANGE() = default;
+ explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
+ D3D12_DESCRIPTOR_RANGE(o)
+ {}
+ CD3DX12_DESCRIPTOR_RANGE(
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
+ }
+
+ inline void Init(
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_DESCRIPTOR_RANGE &range,
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ range.RangeType = rangeType;
+ range.NumDescriptors = numDescriptors;
+ range.BaseShaderRegister = baseShaderRegister;
+ range.RegisterSpace = registerSpace;
+ range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
+{
+ CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
+ explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
+ D3D12_ROOT_DESCRIPTOR_TABLE(o)
+ {}
+ CD3DX12_ROOT_DESCRIPTOR_TABLE(
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
+ {
+ Init(numDescriptorRanges, _pDescriptorRanges);
+ }
+
+ inline void Init(
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
+ {
+ Init(*this, numDescriptorRanges, _pDescriptorRanges);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
+ {
+ rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
+ rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
+{
+ CD3DX12_ROOT_CONSTANTS() = default;
+ explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
+ D3D12_ROOT_CONSTANTS(o)
+ {}
+ CD3DX12_ROOT_CONSTANTS(
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(num32BitValues, shaderRegister, registerSpace);
+ }
+
+ inline void Init(
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(*this, num32BitValues, shaderRegister, registerSpace);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0) noexcept
+ {
+ rootConstants.Num32BitValues = num32BitValues;
+ rootConstants.ShaderRegister = shaderRegister;
+ rootConstants.RegisterSpace = registerSpace;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
+{
+ CD3DX12_ROOT_DESCRIPTOR() = default;
+ explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
+ D3D12_ROOT_DESCRIPTOR(o)
+ {}
+ CD3DX12_ROOT_DESCRIPTOR(
+ UINT shaderRegister,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(shaderRegister, registerSpace);
+ }
+
+ inline void Init(
+ UINT shaderRegister,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(*this, shaderRegister, registerSpace);
+ }
+
+ static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
+ {
+ table.ShaderRegister = shaderRegister;
+ table.RegisterSpace = registerSpace;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
+{
+ CD3DX12_ROOT_PARAMETER() = default;
+ explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
+ D3D12_ROOT_PARAMETER(o)
+ {}
+
+ static inline void InitAsDescriptorTable(
+ _Out_ D3D12_ROOT_PARAMETER &rootParam,
+ UINT numDescriptorRanges,
+ _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
+ }
+
+ static inline void InitAsConstants(
+ _Out_ D3D12_ROOT_PARAMETER &rootParam,
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
+ }
+
+ static inline void InitAsConstantBufferView(
+ _Out_ D3D12_ROOT_PARAMETER &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
+ }
+
+ static inline void InitAsShaderResourceView(
+ _Out_ D3D12_ROOT_PARAMETER &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
+ }
+
+ static inline void InitAsUnorderedAccessView(
+ _Out_ D3D12_ROOT_PARAMETER &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
+ }
+
+ inline void InitAsDescriptorTable(
+ UINT numDescriptorRanges,
+ _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
+ }
+
+ inline void InitAsConstants(
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
+ }
+
+ inline void InitAsConstantBufferView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
+ }
+
+ inline void InitAsShaderResourceView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
+ }
+
+ inline void InitAsUnorderedAccessView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
+{
+ CD3DX12_STATIC_SAMPLER_DESC() = default;
+ explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
+ D3D12_STATIC_SAMPLER_DESC(o)
+ {}
+ CD3DX12_STATIC_SAMPLER_DESC(
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(
+ shaderRegister,
+ filter,
+ addressU,
+ addressV,
+ addressW,
+ mipLODBias,
+ maxAnisotropy,
+ comparisonFunc,
+ borderColor,
+ minLOD,
+ maxLOD,
+ shaderVisibility,
+ registerSpace);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0) noexcept
+ {
+ samplerDesc.ShaderRegister = shaderRegister;
+ samplerDesc.Filter = filter;
+ samplerDesc.AddressU = addressU;
+ samplerDesc.AddressV = addressV;
+ samplerDesc.AddressW = addressW;
+ samplerDesc.MipLODBias = mipLODBias;
+ samplerDesc.MaxAnisotropy = maxAnisotropy;
+ samplerDesc.ComparisonFunc = comparisonFunc;
+ samplerDesc.BorderColor = borderColor;
+ samplerDesc.MinLOD = minLOD;
+ samplerDesc.MaxLOD = maxLOD;
+ samplerDesc.ShaderVisibility = shaderVisibility;
+ samplerDesc.RegisterSpace = registerSpace;
+ }
+ inline void Init(
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0) noexcept
+ {
+ Init(
+ *this,
+ shaderRegister,
+ filter,
+ addressU,
+ addressV,
+ addressW,
+ mipLODBias,
+ maxAnisotropy,
+ comparisonFunc,
+ borderColor,
+ minLOD,
+ maxLOD,
+ shaderVisibility,
+ registerSpace);
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+struct CD3DX12_STATIC_SAMPLER_DESC1 : public D3D12_STATIC_SAMPLER_DESC1
+{
+ CD3DX12_STATIC_SAMPLER_DESC1() = default;
+ explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC &o) noexcept
+ {
+ memcpy(this, &o, sizeof(D3D12_STATIC_SAMPLER_DESC));
+ Flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE;
+ }
+ explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC1 & o) noexcept :
+ D3D12_STATIC_SAMPLER_DESC1(o)
+ {}
+ CD3DX12_STATIC_SAMPLER_DESC1(
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0,
+ D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
+ {
+ Init(
+ shaderRegister,
+ filter,
+ addressU,
+ addressV,
+ addressW,
+ mipLODBias,
+ maxAnisotropy,
+ comparisonFunc,
+ borderColor,
+ minLOD,
+ maxLOD,
+ shaderVisibility,
+ registerSpace,
+ flags);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_STATIC_SAMPLER_DESC1 &samplerDesc,
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0,
+ D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
+ {
+ samplerDesc.ShaderRegister = shaderRegister;
+ samplerDesc.Filter = filter;
+ samplerDesc.AddressU = addressU;
+ samplerDesc.AddressV = addressV;
+ samplerDesc.AddressW = addressW;
+ samplerDesc.MipLODBias = mipLODBias;
+ samplerDesc.MaxAnisotropy = maxAnisotropy;
+ samplerDesc.ComparisonFunc = comparisonFunc;
+ samplerDesc.BorderColor = borderColor;
+ samplerDesc.MinLOD = minLOD;
+ samplerDesc.MaxLOD = maxLOD;
+ samplerDesc.ShaderVisibility = shaderVisibility;
+ samplerDesc.RegisterSpace = registerSpace;
+ samplerDesc.Flags = flags;
+ }
+ inline void Init(
+ UINT shaderRegister,
+ D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
+ D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
+ FLOAT mipLODBias = 0,
+ UINT maxAnisotropy = 16,
+ D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
+ D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
+ FLOAT minLOD = 0.f,
+ FLOAT maxLOD = D3D12_FLOAT32_MAX,
+ D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
+ UINT registerSpace = 0,
+ D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
+ {
+ Init(
+ *this,
+ shaderRegister,
+ filter,
+ addressU,
+ addressV,
+ addressW,
+ mipLODBias,
+ maxAnisotropy,
+ comparisonFunc,
+ borderColor,
+ minLOD,
+ maxLOD,
+ shaderVisibility,
+ registerSpace,
+ flags);
+ }
+};
+#endif // D3D12_SDK_VERSION >= 609
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
+{
+ CD3DX12_ROOT_SIGNATURE_DESC() = default;
+ explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
+ D3D12_ROOT_SIGNATURE_DESC(o)
+ {}
+ CD3DX12_ROOT_SIGNATURE_DESC(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+ CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
+ {
+ Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
+ }
+
+ inline void Init(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ desc.NumParameters = numParameters;
+ desc.pParameters = _pParameters;
+ desc.NumStaticSamplers = numStaticSamplers;
+ desc.pStaticSamplers = _pStaticSamplers;
+ desc.Flags = flags;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
+{
+ CD3DX12_DESCRIPTOR_RANGE1() = default;
+ explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
+ D3D12_DESCRIPTOR_RANGE1(o)
+ {}
+ CD3DX12_DESCRIPTOR_RANGE1(
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
+ }
+
+ inline void Init(
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
+ D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
+ UINT numDescriptors,
+ UINT baseShaderRegister,
+ UINT registerSpace = 0,
+ D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
+ UINT offsetInDescriptorsFromTableStart =
+ D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
+ {
+ range.RangeType = rangeType;
+ range.NumDescriptors = numDescriptors;
+ range.BaseShaderRegister = baseShaderRegister;
+ range.RegisterSpace = registerSpace;
+ range.Flags = flags;
+ range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
+{
+ CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
+ explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
+ D3D12_ROOT_DESCRIPTOR_TABLE1(o)
+ {}
+ CD3DX12_ROOT_DESCRIPTOR_TABLE1(
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
+ {
+ Init(numDescriptorRanges, _pDescriptorRanges);
+ }
+
+ inline void Init(
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
+ {
+ Init(*this, numDescriptorRanges, _pDescriptorRanges);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
+ UINT numDescriptorRanges,
+ _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
+ {
+ rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
+ rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
+{
+ CD3DX12_ROOT_DESCRIPTOR1() = default;
+ explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
+ D3D12_ROOT_DESCRIPTOR1(o)
+ {}
+ CD3DX12_ROOT_DESCRIPTOR1(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
+ {
+ Init(shaderRegister, registerSpace, flags);
+ }
+
+ inline void Init(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
+ {
+ Init(*this, shaderRegister, registerSpace, flags);
+ }
+
+ static inline void Init(
+ _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
+ {
+ table.ShaderRegister = shaderRegister;
+ table.RegisterSpace = registerSpace;
+ table.Flags = flags;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
+{
+ CD3DX12_ROOT_PARAMETER1() = default;
+ explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
+ D3D12_ROOT_PARAMETER1(o)
+ {}
+
+ static inline void InitAsDescriptorTable(
+ _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
+ UINT numDescriptorRanges,
+ _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
+ }
+
+ static inline void InitAsConstants(
+ _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
+ }
+
+ static inline void InitAsConstantBufferView(
+ _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
+ }
+
+ static inline void InitAsShaderResourceView(
+ _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
+ }
+
+ static inline void InitAsUnorderedAccessView(
+ _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
+ rootParam.ShaderVisibility = visibility;
+ CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
+ }
+
+ inline void InitAsDescriptorTable(
+ UINT numDescriptorRanges,
+ _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
+ }
+
+ inline void InitAsConstants(
+ UINT num32BitValues,
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
+ }
+
+ inline void InitAsConstantBufferView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
+ }
+
+ inline void InitAsShaderResourceView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
+ }
+
+ inline void InitAsUnorderedAccessView(
+ UINT shaderRegister,
+ UINT registerSpace = 0,
+ D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
+ D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
+ {
+ InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
+{
+ CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
+ explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
+ D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
+ {}
+ explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
+ {
+ Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
+ Desc_1_0 = o;
+ }
+ explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
+ {
+ Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
+ Desc_1_1 = o;
+ }
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC2& o) noexcept
+ {
+ Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
+ Desc_1_2 = o;
+ }
+#endif
+ CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+ CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+ CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
+ {
+ Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
+ }
+
+ inline void Init_1_0(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+
+ static inline void Init_1_0(
+ _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
+ desc.Desc_1_0.NumParameters = numParameters;
+ desc.Desc_1_0.pParameters = _pParameters;
+ desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
+ desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
+ desc.Desc_1_0.Flags = flags;
+ }
+
+ inline void Init_1_1(
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
+ }
+
+ static inline void Init_1_1(
+ _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
+ desc.Desc_1_1.NumParameters = numParameters;
+ desc.Desc_1_1.pParameters = _pParameters;
+ desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
+ desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
+ desc.Desc_1_1.Flags = flags;
+ }
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ static inline void Init_1_2(
+ _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC& desc,
+ UINT numParameters,
+ _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
+ UINT numStaticSamplers = 0,
+ _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1* _pStaticSamplers = nullptr,
+ D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
+ {
+ desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
+ desc.Desc_1_2.NumParameters = numParameters;
+ desc.Desc_1_2.pParameters = _pParameters;
+ desc.Desc_1_2.NumStaticSamplers = numStaticSamplers;
+ desc.Desc_1_2.pStaticSamplers = _pStaticSamplers;
+ desc.Desc_1_2.Flags = flags;
+ }
+#endif
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
+{
+ CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
+ explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
+ D3D12_CPU_DESCRIPTOR_HANDLE(o)
+ {}
+ CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
+ CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
+ {
+ InitOffsetted(other, offsetScaledByIncrementSize);
+ }
+ CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
+ }
+ CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
+ return *this;
+ }
+ CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
+ {
+ ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
+ return *this;
+ }
+ bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
+ {
+ return (ptr == other.ptr);
+ }
+ bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
+ {
+ return (ptr != other.ptr);
+ }
+ CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
+ {
+ ptr = other.ptr;
+ return *this;
+ }
+
+ inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
+ {
+ InitOffsetted(*this, base, offsetScaledByIncrementSize);
+ }
+
+ inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
+ }
+
+ static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
+ {
+ handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
+ }
+
+ static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
+{
+ CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
+ explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
+ D3D12_GPU_DESCRIPTOR_HANDLE(o)
+ {}
+ CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
+ CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
+ {
+ InitOffsetted(other, offsetScaledByIncrementSize);
+ }
+ CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
+ }
+ CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
+ return *this;
+ }
+ CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
+ {
+ ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
+ return *this;
+ }
+ inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
+ {
+ return (ptr == other.ptr);
+ }
+ inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
+ {
+ return (ptr != other.ptr);
+ }
+ CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
+ {
+ ptr = other.ptr;
+ return *this;
+ }
+
+ inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
+ {
+ InitOffsetted(*this, base, offsetScaledByIncrementSize);
+ }
+
+ inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
+ }
+
+ static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
+ {
+ handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
+ }
+
+ static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
+ {
+ handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
+// To help enable root signature 1.1 features when they are available and not require maintaining
+// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
+// 1.1 is not supported.
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wcovered-switch-default"
+#endif
+
+inline HRESULT D3DX12SerializeVersionedRootSignature(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
+ D3D_ROOT_SIGNATURE_VERSION MaxVersion,
+ _Outptr_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
+{
+ if (ppErrorBlob != nullptr)
+ {
+ *ppErrorBlob = nullptr;
+ }
+
+ switch (MaxVersion)
+ {
+ case D3D_ROOT_SIGNATURE_VERSION_1_0:
+ switch (pRootSignatureDesc->Version)
+ {
+ case D3D_ROOT_SIGNATURE_VERSION_1_0:
+ return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
+
+ case D3D_ROOT_SIGNATURE_VERSION_1_1:
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D_ROOT_SIGNATURE_VERSION_1_2:
+#endif
+ {
+ HRESULT hr = S_OK;
+ const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
+
+ const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
+ void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
+ if (ParametersSize > 0 && pParameters == nullptr)
+ {
+ hr = E_OUTOFMEMORY;
+ }
+ auto pParameters_1_0 = static_cast(pParameters);
+
+ if (SUCCEEDED(hr))
+ {
+ for (UINT n = 0; n < desc_1_1.NumParameters; n++)
+ {
+ __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
+ pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
+ pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
+
+ switch (desc_1_1.pParameters[n].ParameterType)
+ {
+ case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
+ pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
+ pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
+ pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
+ break;
+
+ case D3D12_ROOT_PARAMETER_TYPE_CBV:
+ case D3D12_ROOT_PARAMETER_TYPE_SRV:
+ case D3D12_ROOT_PARAMETER_TYPE_UAV:
+ pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
+ pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
+ break;
+
+ case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
+ {
+ const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
+
+ const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
+ void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
+ if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
+ {
+ hr = E_OUTOFMEMORY;
+ }
+ auto pDescriptorRanges_1_0 = static_cast(pDescriptorRanges);
+
+ if (SUCCEEDED(hr))
+ {
+ for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
+ {
+ __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
+ pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
+ pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
+ pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
+ pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
+ pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
+ }
+ }
+
+ D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
+ table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
+ table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ if (desc_1_1.NumStaticSamplers > 0 && pRootSignatureDesc->Version == D3D_ROOT_SIGNATURE_VERSION_1_2)
+ {
+ const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
+ pStaticSamplers = static_cast(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
+
+ if (pStaticSamplers == nullptr)
+ {
+ hr = E_OUTOFMEMORY;
+ }
+ else
+ {
+ const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
+ for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
+ {
+ if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
+ {
+ hr = E_INVALIDARG;
+ break;
+ }
+ memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
+ }
+ }
+ }
+#endif
+
+ if (SUCCEEDED(hr))
+ {
+ const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
+ hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
+ }
+
+ if (pParameters)
+ {
+ for (UINT n = 0; n < desc_1_1.NumParameters; n++)
+ {
+ if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
+ {
+ auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
+ HeapFree(GetProcessHeap(), 0, reinterpret_cast(const_cast(pDescriptorRanges_1_0)));
+ }
+ }
+ HeapFree(GetProcessHeap(), 0, pParameters);
+ }
+
+ if (pStaticSamplers)
+ {
+ HeapFree(GetProcessHeap(), 0, pStaticSamplers);
+ }
+
+ return hr;
+ }
+
+ default:
+ break;
+ }
+ break;
+
+ case D3D_ROOT_SIGNATURE_VERSION_1_1:
+ switch (pRootSignatureDesc->Version)
+ {
+ case D3D_ROOT_SIGNATURE_VERSION_1_0:
+ case D3D_ROOT_SIGNATURE_VERSION_1_1:
+ return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D_ROOT_SIGNATURE_VERSION_1_2:
+ {
+ HRESULT hr = S_OK;
+ const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
+
+ D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
+ if (desc_1_1.NumStaticSamplers > 0)
+ {
+ const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
+ pStaticSamplers = static_cast(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
+
+ if (pStaticSamplers == nullptr)
+ {
+ hr = E_OUTOFMEMORY;
+ }
+ else
+ {
+ const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
+ for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
+ {
+ if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
+ {
+ hr = E_INVALIDARG;
+ break;
+ }
+ memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
+ }
+ }
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
+ hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
+ }
+
+ if (pStaticSamplers)
+ {
+ HeapFree(GetProcessHeap(), 0, pStaticSamplers);
+ }
+
+ return hr;
+ }
+#endif
+
+ default:
+ break;
+ }
+ break;
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D_ROOT_SIGNATURE_VERSION_1_2:
+#endif
+ default:
+ return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+ }
+
+ return E_INVALIDARG;
+}
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
diff --git a/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_state_object.h b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_state_object.h
new file mode 100644
index 000000000..579ecc8f8
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/d3dx12/d3dx12_state_object.h
@@ -0,0 +1,2570 @@
+//*********************************************************
+//
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License (MIT).
+//
+//*********************************************************
+
+#pragma once
+
+#ifndef __cplusplus
+#error D3DX12 requires C++
+#endif
+
+#include "d3dx12_default.h"
+#include "d3d12.h"
+#include "d3dx12_core.h"
+
+//================================================================================================
+// D3DX12 State Object Creation Helpers
+//
+// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
+// Uses STL
+//
+// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see its public methods).
+// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
+// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
+// etc.). The subobject helpers each have methods specific to the subobject for configuring its
+// contents.
+//
+//================================================================================================
+#include
+#include
+#include
+#include
+#include
+#include
+#ifndef D3DX12_USE_ATL
+#include
+#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
+#define D3DX12_COM_PTR_GET(x) x.Get()
+#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
+#else
+#include
+#define D3DX12_COM_PTR ATL::CComPtr
+#define D3DX12_COM_PTR_GET(x) x.p
+#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
+#endif
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_STATE_OBJECT_DESC
+{
+public:
+ CD3DX12_STATE_OBJECT_DESC() noexcept
+ {
+ Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
+ }
+ CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
+ {
+ Init(Type);
+ }
+ void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
+ CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
+ CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
+ CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
+ CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
+ operator const D3D12_STATE_OBJECT_DESC& ()
+ {
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ m_RepointedSubobjectVectors.clear();
+ m_RepointedPrograms.clear();
+#endif
+ m_RepointedAssociations.clear();
+ m_SubobjectArray.clear();
+ m_SubobjectArray.reserve(m_Desc.NumSubobjects);
+ // Flatten subobjects into an array (each flattened subobject still has a
+ // member that's a pointer to its desc that's not flattened)
+ for (auto Iter = m_SubobjectList.begin();
+ Iter != m_SubobjectList.end(); Iter++)
+ {
+ m_SubobjectArray.push_back(*Iter);
+ // Store new location in array so we can redirect pointers contained in subobjects
+ Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
+ }
+ // For subobjects with pointer fields, create a new copy of those subobject definitions
+ // with fixed pointers
+ for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
+ {
+ if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
+ {
+ auto pOriginalSubobjectAssociation =
+ static_cast(m_SubobjectArray[i].pDesc);
+ D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
+ auto pWrapper =
+ static_cast(pOriginalSubobjectAssociation->pSubobjectToAssociate);
+ Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
+ m_RepointedAssociations.push_back(Repointed);
+ m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
+ }
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
+ {
+ auto originalGenericProgramDesc =
+ static_cast(m_SubobjectArray[i].pDesc);
+ D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
+ if (originalGenericProgramDesc->NumSubobjects > 0)
+ {
+ m_RepointedSubobjectVectors.emplace_back(std::vector());
+ std::vector& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
+ repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
+ for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
+ {
+ auto pWrapper =
+ static_cast(originalGenericProgramDesc->ppSubobjects[s]);
+ repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
+ }
+ // Below: using ugly way to get pointer in case .data() is not defined
+ Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
+ }
+ m_RepointedPrograms.push_back(Repointed);
+ m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
+ }
+#endif
+ }
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
+ return m_Desc;
+ }
+ operator const D3D12_STATE_OBJECT_DESC* ()
+ {
+ // Cast calls the above final preparation work
+ return &static_cast(*this);
+ }
+
+ // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
+ // whose lifetime is owned by this class.
+ // e.g.
+ //
+ // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
+ // auto Lib0 = Collection1.CreateSubobject();
+ // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
+ // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
+ // // data/engine driven
+ // etc.
+ //
+ // Alternatively, users can instantiate sububject helpers explicitly, such as via local
+ // variables instead, passing the state object desc that should point to it into the helper
+ // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
+ // In this alternative scenario, the user must keep the subobject alive as long as the state
+ // object it is associated with is alive, else its pointer references will be stale.
+ // e.g.
+ //
+ // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
+ // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
+ // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
+ // // - meaning all exports in the libraries
+ // // are exported
+ // etc.
+
+ template
+ T* CreateSubobject()
+ {
+ T* pSubobject = new T(*this);
+ m_OwnedSubobjectHelpers.emplace_back(pSubobject);
+ return pSubobject;
+ }
+
+ template
+ T* CreateSubobject(U&& arg)
+ {
+ T* pSubobject = new T(std::forward(arg), *this);
+ m_OwnedSubobjectHelpers.emplace_back(pSubobject);
+ return pSubobject;
+ }
+
+private:
+ D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
+ {
+ SUBOBJECT_WRAPPER Subobject;
+ Subobject.pSubobjectArrayLocation = nullptr;
+ Subobject.Type = Type;
+ Subobject.pDesc = pDesc;
+ m_SubobjectList.push_back(Subobject);
+ m_Desc.NumSubobjects++;
+ return &m_SubobjectList.back();
+ }
+ void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
+ {
+ SetStateObjectType(Type);
+ m_Desc.pSubobjects = nullptr;
+ m_Desc.NumSubobjects = 0;
+ m_SubobjectList.clear();
+ m_SubobjectArray.clear();
+ m_RepointedAssociations.clear();
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ m_RepointedSubobjectVectors.clear();
+ m_RepointedPrograms.clear();
+#endif
+ }
+ typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
+ {
+ D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
+ // for repointing pointers in subobjects
+ } SUBOBJECT_WRAPPER;
+ D3D12_STATE_OBJECT_DESC m_Desc;
+ std::list m_SubobjectList; // Pointers to list nodes handed out so
+ // these can be edited live
+ std::vector m_SubobjectArray; // Built at the end, copying list contents
+
+ std::list
+ m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
+ // repointed to flattened array
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ std::list>
+ m_RepointedSubobjectVectors;
+ std::list
+ m_RepointedPrograms;
+#endif
+
+ template
+ class StringContainer
+ {
+ public:
+ CStr LocalCopy(CStr string, bool bSingleString = false)
+ {
+ if (string)
+ {
+ if (bSingleString)
+ {
+ m_Strings.clear();
+ m_Strings.push_back(string);
+ }
+ else
+ {
+ m_Strings.push_back(string);
+ }
+ return m_Strings.back().c_str();
+ }
+ else
+ {
+ return nullptr;
+ }
+ }
+ void clear() noexcept { m_Strings.clear(); }
+ private:
+ std::list m_Strings;
+ };
+
+public:
+ class SUBOBJECT_HELPER_BASE
+ {
+ public:
+ SUBOBJECT_HELPER_BASE() noexcept { Init(); }
+ virtual ~SUBOBJECT_HELPER_BASE() = default;
+ virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
+ SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
+ SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
+ SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
+ SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
+ void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
+ }
+ operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
+ protected:
+ virtual void* Data() noexcept = 0;
+ void Init() noexcept { m_pSubobject = nullptr; }
+ D3D12_STATE_SUBOBJECT* m_pSubobject;
+ };
+
+private:
+ std::list> m_OwnedSubobjectHelpers;
+
+ friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
+ friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
+ friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
+ friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+ friend class CD3DX12_HIT_GROUP_SUBOBJECT;
+ friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
+ friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
+ friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
+ friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
+ friend class CD3DX12_NODE_MASK_SUBOBJECT;
+ //TODO: SDK Version check should include all the newly added subobject type for the public release.
+ // The SDK version check will be changed based on when we release state objects.
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
+ friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
+ friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
+ friend class CD3DX12_BLEND_SUBOBJECT;
+ friend class CD3DX12_RASTERIZER_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
+ friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
+ friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
+ friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
+ friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
+ friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
+ friend class CD3DX12_FLAGS_SUBOBJECT;
+ friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
+ friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
+ friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
+ friend class CD3DX12_NODE_HELPER_BASE;
+ friend class CD3DX12_SHADER_NODE;
+ friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
+#endif // D3D12_SDK_VERSION >= 612
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
+ friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
+#endif
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DXIL_LIBRARY_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
+ void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
+ {
+ static const D3D12_SHADER_BYTECODE Default = {};
+ m_Desc.DXILLibrary = pCode ? *pCode : Default;
+ }
+ void DefineExport(
+ LPCWSTR Name,
+ LPCWSTR ExportToRename = nullptr,
+ D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
+ {
+ D3D12_EXPORT_DESC Export;
+ Export.Name = m_Strings.LocalCopy(Name);
+ Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
+ Export.Flags = Flags;
+ m_Exports.push_back(Export);
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ m_Desc.NumExports = static_cast(m_Exports.size());
+ }
+ template
+ void DefineExports(LPCWSTR(&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ void DefineExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
+ }
+ operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Strings.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_DXIL_LIBRARY_DESC m_Desc;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_Exports;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
+ void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
+ {
+ m_Desc.pExistingCollection = pExistingCollection;
+ m_CollectionRef = pExistingCollection;
+ }
+ void DefineExport(
+ LPCWSTR Name,
+ LPCWSTR ExportToRename = nullptr,
+ D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
+ {
+ D3D12_EXPORT_DESC Export;
+ Export.Name = m_Strings.LocalCopy(Name);
+ Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
+ Export.Flags = Flags;
+ m_Exports.push_back(Export);
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ m_Desc.NumExports = static_cast(m_Exports.size());
+ }
+ template
+ void DefineExports(LPCWSTR(&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ void DefineExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
+ }
+ operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_CollectionRef = nullptr;
+ m_Strings.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_EXISTING_COLLECTION_DESC m_Desc;
+ D3DX12_COM_PTR m_CollectionRef;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_Exports;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
+ void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
+ {
+ m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
+ }
+ void AddExport(LPCWSTR Export)
+ {
+ m_Desc.NumExports++;
+ m_Exports.push_back(m_Strings.LocalCopy(Export));
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ }
+ template
+ void AddExports(LPCWSTR (&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ AddExport(Exports[i]);
+ }
+ }
+ void AddExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ AddExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+ }
+ operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Strings.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_Exports;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
+ {
+ Init();
+ }
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
+ void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
+ {
+ m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
+ }
+ void AddExport(LPCWSTR Export)
+ {
+ m_Desc.NumExports++;
+ m_Exports.push_back(m_Strings.LocalCopy(Export));
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ }
+ template
+ void AddExports(LPCWSTR (&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ AddExport(Exports[i]);
+ }
+ }
+ void AddExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ AddExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+ }
+ operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Strings.clear();
+ m_SubobjectName.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
+ std::vector m_Exports;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_HIT_GROUP_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+ CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+ CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
+ CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
+ void SetHitGroupExport(LPCWSTR exportName)
+ {
+ m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
+ }
+ void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
+ void SetAnyHitShaderImport(LPCWSTR importName)
+ {
+ m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
+ }
+ void SetClosestHitShaderImport(LPCWSTR importName)
+ {
+ m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
+ }
+ void SetIntersectionShaderImport(LPCWSTR importName)
+ {
+ m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
+ }
+ operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ for (UINT i = 0; i < m_NumStrings; i++)
+ {
+ m_Strings[i].clear();
+ }
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_HIT_GROUP_DESC m_Desc;
+ static constexpr UINT m_NumStrings = 4;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer
+ m_Strings[m_NumStrings]; // one string for every entrypoint name
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
+ void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
+ {
+ m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
+ m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
+ }
+ operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
+ void Config(UINT MaxTraceRecursionDepth) noexcept
+ {
+ m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
+ }
+ operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
+ void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
+ {
+ m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
+ m_Desc.Flags = Flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
+ }
+ operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
+ {
+ m_pRootSig = pRootSig;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
+ }
+ operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_pRootSig = nullptr;
+ }
+ void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
+ D3DX12_COM_PTR m_pRootSig;
+};
+
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
+ {
+ m_pRootSig = pRootSig;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
+ }
+ operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_pRootSig = nullptr;
+ }
+ void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
+ D3DX12_COM_PTR m_pRootSig;
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+//------------------------------------------------------------------------------------------------
+class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
+ {
+ if (pDesc)
+ {
+ m_Desc.Desc = {};
+ m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
+ m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
+ }
+ operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
+ operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
+ {
+ if (pDesc)
+ {
+ m_Desc.Desc = {};
+ m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
+ m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
+ }
+ operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
+ operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
+};
+
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
+ void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
+ {
+ const unsigned char* pKeyBytes = static_cast(pKey);
+ m_Key.clear();
+ m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
+ m_Desc.pKey = m_Key.data();
+ m_Desc.KeySize = KeySize;
+ }
+ void DefineExport(
+ LPCWSTR Name,
+ LPCWSTR ExportToRename = nullptr,
+ D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
+ {
+ D3D12_EXPORT_DESC Export;
+ Export.Name = m_Strings.LocalCopy(Name);
+ Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
+ Export.Flags = Flags;
+ m_Exports.push_back(Export);
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ m_Desc.NumExports = static_cast(m_Exports.size());
+ }
+ template
+ void DefineExports(LPCWSTR(&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ void DefineExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
+ }
+ operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Strings.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
+ std::vector m_Key;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_Exports;
+};
+
+#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
+ void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
+ {
+ m_Desc.Flags = Flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
+ }
+ operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_STATE_OBJECT_CONFIG m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_NODE_MASK_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_NODE_MASK_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+ CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+ CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
+ CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
+ void SetNodeMask(UINT NodeMask) noexcept
+ {
+ m_Desc.NodeMask = NodeMask;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
+ }
+ operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
+ operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_NODE_MASK m_Desc;
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+//------------------------------------------------------------------------------------------------
+class CD3DX12_STREAM_OUTPUT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_STREAM_OUTPUT_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
+ {
+ m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
+ entry.Stream,
+ m_Strings.LocalCopy(entry.SemanticName),
+ entry.SemanticIndex,
+ entry.StartComponent,
+ entry.ComponentCount,
+ entry.OutputSlot
+ });
+ m_Desc.NumEntries++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pSODeclaration = &m_soDecalEntries[0];
+ }
+ void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
+ {
+ m_soDecalEntries.resize(numEntries);
+ for (UINT i = 0; i < numEntries; i++)
+ {
+ m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
+ soDeclEntries[i].Stream,
+ m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
+ soDeclEntries[i].SemanticIndex,
+ soDeclEntries[i].StartComponent,
+ soDeclEntries[i].ComponentCount,
+ soDeclEntries[i].OutputSlot
+ };
+ }
+ m_Desc.NumEntries = numEntries;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ if (numEntries > 0)
+ {
+ m_Desc.pSODeclaration = &m_soDecalEntries[0];
+ }
+ }
+ void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
+ {
+ for (UINT i = 0; i < numStrides; ++i)
+ {
+ m_Strides[i] = bufferStrides[i];
+ }
+ m_Desc.pBufferStrides = m_Strides;
+ m_Desc.NumStrides = numStrides;
+ }
+ void SetRasterizedStream(UINT rasterizedStream)
+ {
+ m_Desc.RasterizedStream = rasterizedStream;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
+ }
+ operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
+
+private:
+ void Init()
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_STREAM_OUTPUT_DESC m_Desc;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_soDecalEntries;
+ UINT m_Strides[D3D12_SO_STREAM_COUNT];
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_BLEND_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_BLEND_SUBOBJECT()
+ : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
+ {
+ m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
+ }
+ void SetIndependentBlendEnable(bool independentBlendEnable)
+ {
+ m_Desc.IndependentBlendEnable = independentBlendEnable;
+ }
+ void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
+ {
+ m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
+ m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
+ m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
+ m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
+ m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
+ m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
+ m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
+ m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
+ m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
+ m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
+ }
+ operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
+ operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_BLEND_DESC m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RASTERIZER_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RASTERIZER_SUBOBJECT()
+ : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetFillMode(D3D12_FILL_MODE fillMode)
+ {
+ m_Desc.FillMode = fillMode;
+ }
+ void SetCullMode(D3D12_CULL_MODE cullMode)
+ {
+ m_Desc.CullMode = cullMode;
+ }
+ void SetFrontCounterClockwise(BOOL frontCounterClockwise)
+ {
+ m_Desc.FrontCounterClockwise = frontCounterClockwise;
+ }
+ void SetDepthBias(FLOAT depthBias)
+ {
+ m_Desc.DepthBias = depthBias;
+ }
+ void SetDepthBiasClamp(FLOAT depthBiasClamp)
+ {
+ m_Desc.DepthBiasClamp = depthBiasClamp;
+ }
+ void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
+ {
+ m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
+ }
+ void SetDepthClipEnable(BOOL depthClipEnable)
+ {
+ m_Desc.DepthClipEnable = depthClipEnable;
+ }
+ void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
+ {
+ m_Desc.LineRasterizationMode = lineRasterizationMode;
+ }
+ void SetForcedSampleCount(UINT forcedSampleCount)
+ {
+ m_Desc.ForcedSampleCount = forcedSampleCount;
+ }
+ void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
+ {
+ m_Desc.ConservativeRaster = conservativeRaster;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
+ }
+ operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
+ operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_RASTERIZER_DESC2 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc,
+ frontFace.StencilReadMask,
+ frontFace.StencilWriteMask
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc,
+ backFace.StencilReadMask,
+ backFace.StencilWriteMask
+ };
+ }
+ void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
+ {
+ m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_INPUT_LAYOUT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_INPUT_LAYOUT_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
+ {
+ m_inputLayoutElements.emplace_back(
+ D3D12_INPUT_ELEMENT_DESC{
+ m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
+ inputLayoutElementDesc.SemanticIndex,
+ inputLayoutElementDesc.Format,
+ inputLayoutElementDesc.InputSlot,
+ inputLayoutElementDesc.AlignedByteOffset,
+ inputLayoutElementDesc.InputSlotClass,
+ inputLayoutElementDesc.InstanceDataStepRate
+ });
+ ++m_Desc.NumElements;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
+ }
+ operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_inputLayoutElements.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_INPUT_LAYOUT_DESC m_Desc;
+ std::vector m_inputLayoutElements;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
+ : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
+ {
+ Init();
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
+ {
+ m_Desc = ibStripCutValue;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
+ }
+ operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
+ operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
+ : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
+ {
+ Init();
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
+ {
+ m_Desc = primitiveTopologytype;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
+ }
+ operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
+ operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetNumRenderTargets(UINT numRenderTargets)
+ {
+ m_Desc.NumRenderTargets = numRenderTargets;
+ }
+ void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
+ {
+ m_Desc.RTFormats[renderTarget] = renderTargetFormat;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
+ }
+ operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
+ operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_RT_FORMAT_ARRAY m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
+ : m_Desc(DXGI_FORMAT_UNKNOWN)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(DXGI_FORMAT_UNKNOWN)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
+ {
+ m_Desc = depthStencilFormat;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
+ }
+ operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
+ operator DXGI_FORMAT& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ DXGI_FORMAT m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SAMPLE_DESC_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_SAMPLE_DESC_SUBOBJECT()
+ : m_Desc({1, 0})
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({1, 0})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetCount(UINT count)
+ {
+ m_Desc.Count = count;
+ }
+ void SetQuality(UINT quality)
+ {
+ m_Desc.Quality = quality;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
+ }
+ operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
+ operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ DXGI_SAMPLE_DESC m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_FLAGS_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_FLAGS_SUBOBJECT()
+ : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
+ {
+ Init();
+ }
+ CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
+ {
+ m_Desc = flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
+ }
+ operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
+ operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_PIPELINE_STATE_FLAGS m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_VIEW_INSTANCING_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_VIEW_INSTANCING_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
+ {
+ m_Desc.ViewInstanceCount++;
+ m_viewInstanceLocations.emplace_back(
+ D3D12_VIEW_INSTANCE_LOCATION
+ {
+ viewInstanceLocation.ViewportArrayIndex,
+ viewInstanceLocation.RenderTargetArrayIndex
+ }
+ );
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
+ }
+ void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
+ {
+ m_Desc.Flags = flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
+ }
+ operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
+ m_viewInstanceLocations.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_VIEW_INSTANCING_DESC m_Desc;
+ std::vector m_viewInstanceLocations;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetStencilReadMask(UINT8 stencilReadMask)
+ {
+ m_Desc.StencilReadMask = stencilReadMask;
+ }
+ void SetStencilWriteMask(UINT8 stencilWriteMask)
+ {
+ m_Desc.StencilWriteMask = stencilWriteMask;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc
+ };
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetStencilReadMask(UINT8 stencilReadMask)
+ {
+ m_Desc.StencilReadMask = stencilReadMask;
+ }
+ void SetStencilWriteMask(UINT8 stencilWriteMask)
+ {
+ m_Desc.StencilWriteMask = stencilWriteMask;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc
+ };
+ }
+ void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
+ {
+ m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SAMPLE_MASK_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_SAMPLE_MASK_SUBOBJECT()
+ : m_Desc(0xffffffffu)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(0xffffffffu)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetSampleMask(UINT sampleMask)
+ {
+ m_Desc = sampleMask;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
+ }
+ operator const UINT& () const noexcept { return m_Desc; }
+ operator UINT& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ UINT m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetProgramName(LPCWSTR ProgramName)
+ {
+ m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
+ }
+ void AddExport(LPCWSTR exportName)
+ {
+ m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
+ m_Desc.NumExports++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pExports = &m_Exports[0];
+ }
+ void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
+ {
+ m_Subobjects.emplace_back(&subobject);
+ m_Desc.NumSubobjects++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.ppSubobjects = &m_Subobjects[0];
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
+ }
+ operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_GENERIC_PROGRAM_DESC m_Desc;
+ std::vector m_Exports;
+ std::vector m_Subobjects;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_NODE_OUTPUT_OVERRIDES
+{
+public:
+ CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
+ {
+ m_Desc.clear();
+ m_ppOwner = ppOwner;
+ *m_ppOwner = nullptr;
+ m_pNumOutputOverrides = pNumOutputOverrides;
+ *m_pNumOutputOverrides = 0;
+ }
+ void NewOutputOverride()
+ {
+ m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
+ *m_ppOwner = m_Desc.data();
+ (*m_pNumOutputOverrides)++;
+ }
+ void OutputIndex(UINT index)
+ {
+ m_Desc.back().OutputIndex = index;
+ }
+ void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
+ m_Desc.back().pNewName = &m_NodeIDs.front();
+ }
+ void AllowSparseNodes(BOOL bAllow)
+ {
+ m_UINTs.emplace_front((UINT)bAllow);
+ m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
+ }
+ void MaxOutputRecords(UINT maxOutputRecords) noexcept
+ {
+ m_UINTs.emplace_front(maxOutputRecords);
+ m_Desc.back().pMaxRecords = &m_UINTs.front();
+ }
+ void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
+ {
+ m_UINTs.emplace_front(outputIndex);
+ m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
+ }
+private:
+ std::vector m_Desc;
+ // Cached parameters
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
+ UINT* m_pNumOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_WORK_GRAPH_SUBOBJECT;
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_NODE_HELPER_BASE
+{
+protected:
+ struct Backreference
+ {
+ CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
+ UINT m_NodeIndex;
+ };
+public:
+ CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
+ : m_BackRef(BackRef)
+ {
+ }
+ virtual ~CD3DX12_NODE_HELPER_BASE() = default;
+protected:
+ D3D12_NODE *GetNode() const;
+ const Backreference m_BackRef;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SHADER_NODE // Not specifying launch mode.
+ // Don't need to distinguish if no parameter overriding is happening
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_SHADER_NODE(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr)
+ : CD3DX12_NODE_HELPER_BASE(BackRef)
+ {
+ GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+};
+
+#endif // D3D12_SDK_VERSION >= 612
+
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a broadcasting launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
+ pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ void DispatchGrid(UINT x, UINT y, UINT z)
+ {
+ m_UINT3s.emplace_front(UINT3{ x,y,z });
+ Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
+ }
+ void MaxDispatchGrid(UINT x, UINT y, UINT z)
+ {
+ m_UINT3s.emplace_front(UINT3{x,y,z});
+ Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ struct UINT3
+ {
+ UINT x;
+ UINT y;
+ UINT z;
+ };
+ std::forward_list m_UINT3s;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a coalescing launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
+ pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ struct UINT3
+ {
+ UINT x;
+ UINT y;
+ UINT z;
+ };
+ std::forward_list m_UINT3s;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a thread launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
+ pNode->Shader.pThreadLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a node where configuration parameters
+// need to be overridden for parameters that are common to all launch node types.
+// This option is a convenience if you don't want to determine what the launch mode is
+// and just want to override a setting that isn't specific to launch mode.
+// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
+ pNode->Shader.pThreadLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_WORK_GRAPH_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
+ }
+ void IncludeAllAvailableNodes()
+ {
+ m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
+ }
+
+
+ void SetProgramName(LPCWSTR ProgramName)
+ {
+ m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
+ }
+ void AddEntrypoint(D3D12_NODE_ID Entrypoint)
+ {
+ m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
+ m_Desc.NumEntrypoints++;
+ m_Desc.pEntrypoints = m_Entrypoints.data();
+ }
+
+ template
+ T* CreateNode()
+ {
+ m_NodeDescs.push_back({});
+ m_Desc.NumExplicitlyDefinedNodes++;
+ m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
+ T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
+ m_OwnedNodeHelpers.emplace_back(pNodeHelper);
+ return pNodeHelper;
+ }
+ CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+#endif // D3D12_SDK_VERSION >= 612
+
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+
+ operator const D3D12_WORK_GRAPH_DESC& () noexcept
+ {
+ return m_Desc;
+ }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Entrypoints.clear();
+ m_NodeDescs.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_WORK_GRAPH_DESC m_Desc;
+ std::vector m_Entrypoints;
+ std::vector m_NodeDescs;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector> m_OwnedNodeHelpers;
+ friend class CD3DX12_NODE_HELPER_BASE;
+};
+
+inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
+{
+ return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
+}
+#endif // D3D12_SDK_VERSION >= 612
+
+#undef D3DX12_COM_PTR
+#undef D3DX12_COM_PTR_GET
+#undef D3DX12_COM_PTR_ADDRESSOF
+
+
diff --git a/Source/ThirdParty/DirectX12Agility/dxgiformat.h b/Source/ThirdParty/DirectX12Agility/dxgiformat.h
new file mode 100644
index 000000000..83e6c0775
--- /dev/null
+++ b/Source/ThirdParty/DirectX12Agility/dxgiformat.h
@@ -0,0 +1,144 @@
+//
+// Copyright (C) Microsoft Corporation.
+// Licensed under the MIT license
+//
+
+#ifndef __dxgiformat_h__
+#define __dxgiformat_h__
+
+#define DXGI_FORMAT_DEFINED 1
+
+typedef enum DXGI_FORMAT
+{
+ DXGI_FORMAT_UNKNOWN = 0,
+ DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
+ DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
+ DXGI_FORMAT_R32G32B32A32_UINT = 3,
+ DXGI_FORMAT_R32G32B32A32_SINT = 4,
+ DXGI_FORMAT_R32G32B32_TYPELESS = 5,
+ DXGI_FORMAT_R32G32B32_FLOAT = 6,
+ DXGI_FORMAT_R32G32B32_UINT = 7,
+ DXGI_FORMAT_R32G32B32_SINT = 8,
+ DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
+ DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
+ DXGI_FORMAT_R16G16B16A16_UNORM = 11,
+ DXGI_FORMAT_R16G16B16A16_UINT = 12,
+ DXGI_FORMAT_R16G16B16A16_SNORM = 13,
+ DXGI_FORMAT_R16G16B16A16_SINT = 14,
+ DXGI_FORMAT_R32G32_TYPELESS = 15,
+ DXGI_FORMAT_R32G32_FLOAT = 16,
+ DXGI_FORMAT_R32G32_UINT = 17,
+ DXGI_FORMAT_R32G32_SINT = 18,
+ DXGI_FORMAT_R32G8X24_TYPELESS = 19,
+ DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
+ DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
+ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
+ DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
+ DXGI_FORMAT_R10G10B10A2_UNORM = 24,
+ DXGI_FORMAT_R10G10B10A2_UINT = 25,
+ DXGI_FORMAT_R11G11B10_FLOAT = 26,
+ DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
+ DXGI_FORMAT_R8G8B8A8_UNORM = 28,
+ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
+ DXGI_FORMAT_R8G8B8A8_UINT = 30,
+ DXGI_FORMAT_R8G8B8A8_SNORM = 31,
+ DXGI_FORMAT_R8G8B8A8_SINT = 32,
+ DXGI_FORMAT_R16G16_TYPELESS = 33,
+ DXGI_FORMAT_R16G16_FLOAT = 34,
+ DXGI_FORMAT_R16G16_UNORM = 35,
+ DXGI_FORMAT_R16G16_UINT = 36,
+ DXGI_FORMAT_R16G16_SNORM = 37,
+ DXGI_FORMAT_R16G16_SINT = 38,
+ DXGI_FORMAT_R32_TYPELESS = 39,
+ DXGI_FORMAT_D32_FLOAT = 40,
+ DXGI_FORMAT_R32_FLOAT = 41,
+ DXGI_FORMAT_R32_UINT = 42,
+ DXGI_FORMAT_R32_SINT = 43,
+ DXGI_FORMAT_R24G8_TYPELESS = 44,
+ DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
+ DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
+ DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
+ DXGI_FORMAT_R8G8_TYPELESS = 48,
+ DXGI_FORMAT_R8G8_UNORM = 49,
+ DXGI_FORMAT_R8G8_UINT = 50,
+ DXGI_FORMAT_R8G8_SNORM = 51,
+ DXGI_FORMAT_R8G8_SINT = 52,
+ DXGI_FORMAT_R16_TYPELESS = 53,
+ DXGI_FORMAT_R16_FLOAT = 54,
+ DXGI_FORMAT_D16_UNORM = 55,
+ DXGI_FORMAT_R16_UNORM = 56,
+ DXGI_FORMAT_R16_UINT = 57,
+ DXGI_FORMAT_R16_SNORM = 58,
+ DXGI_FORMAT_R16_SINT = 59,
+ DXGI_FORMAT_R8_TYPELESS = 60,
+ DXGI_FORMAT_R8_UNORM = 61,
+ DXGI_FORMAT_R8_UINT = 62,
+ DXGI_FORMAT_R8_SNORM = 63,
+ DXGI_FORMAT_R8_SINT = 64,
+ DXGI_FORMAT_A8_UNORM = 65,
+ DXGI_FORMAT_R1_UNORM = 66,
+ DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
+ DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
+ DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
+ DXGI_FORMAT_BC1_TYPELESS = 70,
+ DXGI_FORMAT_BC1_UNORM = 71,
+ DXGI_FORMAT_BC1_UNORM_SRGB = 72,
+ DXGI_FORMAT_BC2_TYPELESS = 73,
+ DXGI_FORMAT_BC2_UNORM = 74,
+ DXGI_FORMAT_BC2_UNORM_SRGB = 75,
+ DXGI_FORMAT_BC3_TYPELESS = 76,
+ DXGI_FORMAT_BC3_UNORM = 77,
+ DXGI_FORMAT_BC3_UNORM_SRGB = 78,
+ DXGI_FORMAT_BC4_TYPELESS = 79,
+ DXGI_FORMAT_BC4_UNORM = 80,
+ DXGI_FORMAT_BC4_SNORM = 81,
+ DXGI_FORMAT_BC5_TYPELESS = 82,
+ DXGI_FORMAT_BC5_UNORM = 83,
+ DXGI_FORMAT_BC5_SNORM = 84,
+ DXGI_FORMAT_B5G6R5_UNORM = 85,
+ DXGI_FORMAT_B5G5R5A1_UNORM = 86,
+ DXGI_FORMAT_B8G8R8A8_UNORM = 87,
+ DXGI_FORMAT_B8G8R8X8_UNORM = 88,
+ DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
+ DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
+ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
+ DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
+ DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
+ DXGI_FORMAT_BC6H_TYPELESS = 94,
+ DXGI_FORMAT_BC6H_UF16 = 95,
+ DXGI_FORMAT_BC6H_SF16 = 96,
+ DXGI_FORMAT_BC7_TYPELESS = 97,
+ DXGI_FORMAT_BC7_UNORM = 98,
+ DXGI_FORMAT_BC7_UNORM_SRGB = 99,
+ DXGI_FORMAT_AYUV = 100,
+ DXGI_FORMAT_Y410 = 101,
+ DXGI_FORMAT_Y416 = 102,
+ DXGI_FORMAT_NV12 = 103,
+ DXGI_FORMAT_P010 = 104,
+ DXGI_FORMAT_P016 = 105,
+ DXGI_FORMAT_420_OPAQUE = 106,
+ DXGI_FORMAT_YUY2 = 107,
+ DXGI_FORMAT_Y210 = 108,
+ DXGI_FORMAT_Y216 = 109,
+ DXGI_FORMAT_NV11 = 110,
+ DXGI_FORMAT_AI44 = 111,
+ DXGI_FORMAT_IA44 = 112,
+ DXGI_FORMAT_P8 = 113,
+ DXGI_FORMAT_A8P8 = 114,
+ DXGI_FORMAT_B4G4R4A4_UNORM = 115,
+
+ DXGI_FORMAT_P208 = 130,
+ DXGI_FORMAT_V208 = 131,
+ DXGI_FORMAT_V408 = 132,
+
+
+ DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
+ DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
+
+ DXGI_FORMAT_A4B4G4R4_UNORM = 191,
+
+
+ DXGI_FORMAT_FORCE_UINT = 0xffffffff
+} DXGI_FORMAT;
+
+#endif // __dxgiformat_h__
diff --git a/Source/Tools/Flax.Build/Deps/Dependencies/DirectX12Agility.cs b/Source/Tools/Flax.Build/Deps/Dependencies/DirectX12Agility.cs
new file mode 100644
index 000000000..72bbfdd78
--- /dev/null
+++ b/Source/Tools/Flax.Build/Deps/Dependencies/DirectX12Agility.cs
@@ -0,0 +1,76 @@
+// Copyright (c) Wojciech Figat. All rights reserved.
+
+using System.IO;
+using System.IO.Compression;
+using Flax.Build;
+
+namespace Flax.Deps.Dependencies
+{
+ ///
+ /// DirectX 12 Agility SDK https://aka.ms/directx12agility
+ ///
+ ///
+ class DirectX12Agility : Dependency
+ {
+ ///
+ public override TargetPlatform[] Platforms
+ {
+ get
+ {
+ switch (BuildPlatform)
+ {
+ case TargetPlatform.Windows:
+ return new[]
+ {
+ TargetPlatform.Windows,
+ };
+ default: return new TargetPlatform[0];
+ }
+ }
+ }
+
+ ///
+ public override TargetArchitecture[] Architectures
+ {
+ get
+ {
+ switch (BuildPlatform)
+ {
+ case TargetPlatform.Windows:
+ return new[]
+ {
+ TargetArchitecture.x86,
+ TargetArchitecture.x64,
+ TargetArchitecture.ARM64,
+ };
+ default: return new TargetArchitecture[0];
+ }
+ }
+ }
+
+ ///
+ public override void Build(BuildOptions options)
+ {
+ var root = options.IntermediateFolder;
+ var packagePath = Path.Combine(root, "package.zip");
+
+ // Download package
+ var version = "1.618.5";
+ if (!File.Exists(packagePath))
+ Downloader.DownloadFileFromUrlToPath("https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/" + version, packagePath);
+ using (ZipArchive archive = ZipFile.Open(packagePath, ZipArchiveMode.Read))
+ archive.ExtractToDirectory(root, true);
+
+ // Deploy header files and license file
+ var dstIncludePath = Path.Combine(options.ThirdPartyFolder, "DirectX12Agility");
+ foreach (var file in new[]
+ {
+ "LICENSE.txt",
+ })
+ {
+ Utilities.FileCopy(Path.Combine(root, file), Path.Combine(dstIncludePath, Path.GetFileName(file)));
+ }
+ Utilities.DirectoryCopy(Path.Combine(root, "build/native/include"), dstIncludePath, true, true, "*.h");
+ }
+ }
+}